首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >模拟对象的EasyMock校验参数

模拟对象的EasyMock校验参数
EN

Stack Overflow用户
提问于 2013-01-25 17:28:49
回答 1查看 2.5K关注 0票数 1

我想验证模拟对象的参数是否正确映射(在方法调用之前有一个映射)。我已经创建了两个对象,其中一个具有预期的值。我预计false会失败,但不知何故easymock没有验证参数是否包含期望值。我怎么才能修复它呢?

真正的类做:

代码语言:javascript
运行
复制
public SomeObject methodname() {
    MyClass  parameter = mapper.map(source,Dest.class);
    serviceBeingMocked.doSomething(parameter); //<-- want to verify this parameter
}

测试

代码语言:javascript
运行
复制
 MyClass correct = ...;
 correct.setA=a;
 correct.setB=b;

 expect(serviceBeingMocked(correct)).andReturn(iDontCare); //this should work



 MyClass false = ...;
 false.setA=eeeeeeeeeee;
 false.setB=ffffffffff;

 expect(serviceBeingMocked(false)).andReturn(iDontCare); // this test should fail

提前感谢!

编辑:找到答案(使用捕获记录参数并通过断言测试值)

捕获参数= new Capitre();expect(serviceBeingMocked(EasyMock.capture(parameter)));

assertEquals(parameter.getValue().getWhatever().equals(correct.getWhatever());

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-25 18:11:45

如果我没理解错的话,这个测试是对methodname()的测试。您想测试一下,在给定一个源的情况下,映射器是否创建了正确的MyClass参数,并将其传递给serviceBeingMocked.doSomething()

因此,实际上,您的methodname()单元测试实际上测试了mapper.map()方法。这是错误的。您应该为mapper.map()编写一个单元测试来测试这一点。确保mapper.map()按预期工作后,您可以通过模拟mapper.map()方法来测试methodname(),并验证这个模拟方法的结果是否传递给了模拟服务(尽管此测试不会增加太多价值)。

要完成此操作,如果您确实希望检查传递给serviceBeingMocked()的值,那么您应该使用capture

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14518885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档