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(),但毫无进展.
任何帮助是极大的赞赏!非常感谢!
您可以使用自定义答案来执行此操作
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)