我正在测试两次调用相同方法(db.getData()
)的方法。但我必须返回两个不同的值。
Mockito.when(db.someMethod()).thenReturn(valueOne).thenReturn(valueTwo);
然后我尝试了多个thenReturn()
。
不幸的是,我只获得了第一个和第二个的价值。第二个db.getData()
方法调用。
答案 0 :(得分:3)
你没有展示很多背景,但这里有一些想法:
thenReturn(valueOne, valueTwo);
,但这不应该有所作为我怀疑您的方法被调用了两次以上,并且您缺少第一次调用(返回valueOne)并且只查看后续调用(这将全部返回valueTwo)。
请参阅the API:
//you can set different behavior for consecutive method calls.
//Last stubbing (e.g: thenReturn("foo")) determines the behavior of further consecutive calls.
when(mock.someMethod("some arg"))
.thenThrow(new RuntimeException())
.thenReturn("foo");
答案 1 :(得分:0)
可能你正在调试,当你想获取breakPoint行的数据时,你是从mock获取的,所以它会返回其中一个thenReturn()
参数,所以当你恢复测试时,它会用第二个参数测试它。
我推荐你,如果你怀疑它是否正常工作,一次获取所有thenReturn()
项目,之后你同意他们没问题,再次开始测试,没有跟踪thenReturn()
项目。