【发布时间】:2015-03-04 17:26:45
【问题描述】:
Java 8、TestNg 6.8.1、Mockito 1.10.19。
这是我第一次使用 Mockito。我在一个类中存根两个方法,它们都将 String 和 double 作为参数并返回 double。在这种情况下,我只关心第二个参数。
在我的单元测试执行期间调用存根方法时,存根只能正常工作一次。随后对存根方法的调用返回 0 而不是增加/减少参数。我将其解释为方法不再被存根。
这里是代码
MyManager myManagerMock = mock(MyManager.class);
when(myManagerMock.method1(someString, someDouble)).thenReturn(someDouble + 0.5d);
when(myManagerMock.method2(someString, someDouble)).thenReturn(someDouble - 0.5d);
// the class ClassBeingTested has a private member of the type MyManager
ClassBeingTested classBeingTested = new ClassBeingTested(myManager);
// the method getSomeDoubleValue() will perform several calls myManagerMock.method1 and myManagerMock.method2
assertThat(classBeingTested.getSomeDoubleValue(someString, someDouble), is(anExpectedDoubleValue));
下面是method 1 和method2 在ClassBeingTested 中的调用方式:
method2(someString, method1(someString, someDouble));
我想知道我做错了什么。据我了解,可以重复调用存根方法,并且它们应该重复返回“thenReturn()”方法中提供的值。
提前感谢所有可以提供帮助的人..
【问题讨论】:
-
请发布一个完整且可重现的示例。
-
我的猜测是模拟工作正常,但您的测试设置不正确......
标签: java testng mockito stubbing