从附有调试器的EasyMock的“漂亮的模拟”中获取异常
||
(免责声明-EasyMock newb)
根据文档(和本文),如果我想使用EasyMock生成存根对象,则应使用
EasyMock.createNiceMock()
。 \“ nice模拟\”实际上是一个存根-即不参与验证的对象,仅返回值。
但是,下面的代码片段对我来说失败,在第二行foo.translate()
行上带有IllegalStateException(\"missing behavior definition for the preceding method\")
。
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_exercised_mock_methods))的存根。
编辑-我已经注意到,几乎总是在连接调试器时收到这些错误,而在未附加调试器时从未得到。任何想法可能有什么关系吗?
没有找到相关结果
已邀请:
3 个回复
浅镁
, 对于意外调用,为null或false。 通过此方法创建的模拟对象不需要任何配置(预期的调用)。您只需创建它并“重播”。例:
在创建的存根上允许进行任何方法调用(不会引发Exception),并且它们将始终返回默认值(0,null或false)。如果您设置了特定的调用期望,则必须配置它的返回值,否则会得到一个错误(这是您的情况)。 如果您想限制可以执行的方法(如果调用了意外方法,会使测试失败),恐怕您将不得不创建常规的模拟程序,设置每个调用的期望值和返回值每个。
蔬谢窗港
蹄渭信妥扳
。在执行此操作之前,您的模拟对象处于“记录状态”。从EasyMock文档中: 处于记录状态(调用之前 重播),则模拟对象不会 表现像模拟对象,但它 记录方法调用。打电话后 重播,其行为类似于模拟对象, 检查是否期望的方法 呼叫真的完成了。 如果要创建存根对象,请先调用
,再调用
: