Mockito会缓存然后是否会阻止?

时间:2016-07-22 13:24:50

标签: java lambda mockito

我有一个包含3种测试方法的测试类。基本上我想要做的是在每次测试中使用不同的客户,并且分配给每个客户的权限通过一个看起来非常像这样的常见方法计算出来:

protected void setupCustomerPermissions(final IntegrationTestCustomer customer)
{   
    System.out.println("customer = " + customer.getName());

    when(permissionClient.createToken()).thenAnswer(invocation ->
    {
        System.out.println("customer again = " + customer.getName());

        if (customer.equals(IntegrationTestCustomer.KRISTIN())) {
            return createToken(IntegrationTestCustomer.KRISTIN());
        } else if (customer.equals(IntegrationTestCustomer.FRED())) {
            return createToken(IntegrationTestCustomer.FRED());
        } else if (customer.equals(IntegrationTestCustomer.DANIELA())) {
            return createToken(IntegrationTestCustomer.DANIELA());
        }

        throw new IllegalStateException("IntegrationTestCustomer:[" + customer.getName() + "] shouldn't have got this far");
    });
}

基本上,我有3个测试:第一个使用KRISTIN作为客户,第二个使用FRED,第三个使用KRISTIN。

请注意System.out.println来电。当第一次测试运行时(使用KRISTIN作为客户),这就是打印的内容:

customer = KRISTIN
customer again = KRISTIN

到目前为止,这么好。现在是有趣的部分......第二个测试(使用FRED作为客户)打印这个

customer = FRED
customer again = KRISTIN

然后再次使用KRISTIN的第三个测试打印出来:

customer = KRISTIN
customer again = FRED

我不知道我在这里做错了什么......两个System.out.println来电都打印同一个客户? Mockito有没有某种缓存?

1 个答案:

答案 0 :(得分:0)

我发现问题是Spring安全测试配置的缓存设置。