java - 是否可以有条件地模拟不带参数的方法?

标签 java mockito

mockito 大师们,我有一个挑战! ;)

我有一个不带参数的方法,我想模​​拟它的行为以提供不同的结果,具体取决于外部条件。

例如,我想做这样的事情:

MyInterface myMock = mock(MyInterface.class);
Sky sky = buildRandomSkyColor();

when(myMock.methodWithNoArguments()).thenReturn("blue").if(sky.isBlue());
when(myMock.methodWithNoArguments()).thenReturn("grey").if(sky.isGrey());

是否有可能在 Mockito 上有这种有条件的行为?我也尝试过使用 doStub()doAnswer(),但一无所获。

非常感谢任何帮助!非常感谢!

最佳答案

您可以使用自定义答案来执行此操作

MyInterface myMock = mock(MyInterface.class);
Sky sky = buildRandomSkyColor();

when(myMock.methodWithNoArguments()).thenAnswer(new Answer<String>(){
    String answer(InvocationOnMock invocation) {
        if(sky.isBlue())
            return "blue";
        else
            return "gray";
    }
}

关于java - 是否可以有条件地模拟不带参数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38507495/

相关文章:

java - 使用尾递归的 DoublyLinkedList - InsertItem

java - 如何获取子串的位置

java - 什么时候创建实例成员?

java - 从java中的不同类访问变量

java - MockMVC 和 Mockito 返回状态预期 <200> 但为 <415>

java - 打包应用程序时不使用 Trustmanager

java - 莫基托。验证方法参数是否为特定类

java - 如何验证具有不同参数的多个方法调用

java - 如何在使用 Autowiring 对象的测试中使用真实函数?

java - Mockito 模拟一个方法,但将其参数用于模拟返回