是否有可能对不带参数的方法进行条件模拟?

fel*_*cao 2 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());
Run Code Online (Sandbox Code Playgroud)

是否有可能在Mockito上有这种有条件的行为?我已经使用也试过doStub()doAnswer(),但毫无进展.

任何帮助是极大的赞赏!非常感谢!

puh*_*len 8

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

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";
    }
}
Run Code Online (Sandbox Code Playgroud)