我正在测试一个调用两次相同方法(db.getData()
)的方法。但是我必须返回两个不同的值。
Mockito.when(db.someMethod()).thenReturn(valueOne).thenReturn(valueTwo);
然后,我尝试了多个
thenReturn()
。不幸的是,对于第一个和第二个
db.getData()
方法调用,我只能得到valueTwo。 最佳答案
您没有显示很多上下文,但是这里有一些想法:
确保db实际上是一个模拟对象
使用调试器检查db.someMethod()是否被两次调用了
您也可以使用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");