(免责声明 - EasyMock 新手)
根据文档(和这个帖子 http://www.jblewitt.com/blog/?p=316=1),如果我想使用 EasyMock 生成存根对象,我应该使用EasyMock.createNiceMock()
。 “漂亮的模拟”实际上是一个存根 - 即不参与验证的对象,仅返回值。
但是,以下代码片段对我来说失败了IllegalStateException("missing behavior definition for the preceding method")
,在第二个foo.translate()
line.
Foo foo = EasyMock.createNiceMock(Foo.class);
EasyMock.replay(foo); // added this line
foo.translate("a", "b");
foo.translate("a", "b"); // only the second calls throws an exception
谁能解释一下,或者告诉我如何使用 EasyMock 创建零详细的存根 (o(number_of_exercished_mock_methods))。
Edit- 我注意到,在附加调试器时几乎总是会遇到这些错误,但在未附加调试器时绝不会出现这些错误。知道这有什么关系吗?
补充杰夫的答案。
来自 EasyMock 的方法 createNiceMock javadoc:
创建一个实现给定接口的模拟对象,顺序检查
默认禁用,并且模拟对象将返回0
,
null 或 false 表示意外调用。
通过此方法创建的模拟对象不需要任何配置(预期的调用)。您只需创建它并“重播它”。例子:
ComplicatedObject stub = EasyMock.createNiceMock();
replay(stub);
在创建的存根上允许任何方法调用(它不会抛出异常),并且它们将始终返回默认值(0、null 或 false)。如果您设置了特定的调用期望,那么您必须配置它的返回值,否则您将收到错误(这就是您的情况)。
如果您想限制可以执行哪些方法(如果调用意外方法,则使测试失败),恐怕您必须创建一个常规模拟,设置每个调用期望以及每个方法的返回值那些。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)