[英]EasyMock mock same method with different parameters
这个问题与这个问题类似,但针对的是 EasyMock 而不是 Mockito。
我有一些这样的测试代码。
expect(mockObject.someMethod("some input", ReturnClassOne.class)).andReturn(returnObjectOne);
expect(mockObject.someMethod("some different input", ReturnClassTwo.class)).andReturn(returnObjectTwo);
但这导致第二行抛出以下异常。
java.lang.IllegalStateException:在 mock 上调用的最后一个方法已经有一个非固定计数集。
我如何模拟mockObject.someMethod
来接受两个具有不同输入参数的调用?
这应该完全有效。 EasyMock 支持这两种记录并且会区分。 例如,下面的代码工作正常。
所以你的情况是具体的。 也许someMethod
签名有一些特别之处。 我会对完整的测试用例感兴趣。
public class MyTest {
public static class ReturnClassOne {}
public static class ReturnClassTwo {}
public static class MyClass {
public <T> T someMethod(String s, Class<T> c) {
try {
return c.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}
@Test
public void test() {
MyClass mockObject = mock(MyClass.class);
expect(mockObject.someMethod("some input", ReturnClassOne.class)).andReturn(new ReturnClassOne());
expect(mockObject.someMethod("some different input", ReturnClassTwo.class)).andReturn(new ReturnClassTwo());
replay(mockObject);
mockObject.someMethod("some input", ReturnClassOne.class);
mockObject.someMethod("some different input", ReturnClassTwo.class);
verify(mockObject);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.