【问题标题】:EasyMock expect(anyObject, anyObject).andReturn(myObject) gives "2 matchers expected, 3 recorded"?EasyMock expect(anyObject, anyObject).andReturn(myObject) 给出“预期 2 个匹配器,记录 3 个”?
【发布时间】:2016-05-03 21:29:48
【问题描述】:

我的代码看起来像

Request1 req1 = EasyMock.anyObject(Request1.class);
Request2 req2 = EasyMock.anyObject(Request2.class);
Request3 req3 = EasyMock.anyObject(Request3.class);

@Mock Service service;
// ...
@Test
myTest() {
    Response resp = new Response();
    EasyMock.expect(service.lookup(req1, req2)).andReturn(resp);
    // ...
}

“EasyMock.expect”行失败了

预计 2 个匹配器,记录 3 个。
当记录方法时匹配器与原始值混合时,通常会发生此异常:
富(5,当量(6)); // 错误
您根本不需要使用匹配器或为每个参数使用匹配器:
富(当量(5),当量(6)); // 对
富(5, 6); // 也对

我给了两个匹配器。也许问题在于andReturn 被赋予了一个值,但我当然想说“无论给出什么输入,都返回resp。”

这似乎与通常的原因不同。 FWIW andStubReturn 给出了同样的错误(这是我所期望的)。

【问题讨论】:

    标签: java junit mocking easymock


    【解决方案1】:

    问题出在另一行

    Request3 req3 = EasyMock.anyObject(Request3.class);
    

    我在其他测试中使用的,我没有意识到它的实例化有副作用。确实如此。

    【讨论】:

    • @SotiriosDelimanolis 不,不过感谢您的意见。如果一个小时前就存在这样一个确切标题的问题,我可以节省半小时的调试时间。
    • 我想真正的问题是你在实例级别声明你的匹配器,而你应该在测试方法级别声明它们。但是在文档中找不到。
    猜你喜欢
    • 2015-02-15
    • 2011-09-26
    • 2021-09-24
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    相关资源
    最近更新 更多