繁体   English   中英

EasyMock验证模拟对象的参数

[英]EasyMock verify parameter of mocked object

我想验证模拟对象的参数是否正确映射(在方法调用之前存在映射)。 我创建了两个对象,其中一个具有预期值。 我期望假的失败,但是以某种方式easymock不会验证参数是否包含期望的值。 我该如何解决?

实班:

public SomeObject methodname() {
    MyClass  parameter = mapper.map(source,Dest.class);
    serviceBeingMocked.doSomething(parameter); //<-- want to verify this parameter
}

测试

 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());

如果我理解正确,则此测试为测试方法methodname() 并且,您想测试一下,给定一个源,正确的MyClass参数表是由映射器创建的,并传递给serviceBeingMocked.doSomething()

所以其实,你的单元测试methodname()实际测试mapper.map()方法。 错了 您应该为mapper.map()编写单元测试以进行测试。 一旦你确保mapper.map()正常工作,您可以测试methodname()被嘲讽mapper.map()方法,并验证该嘲笑方法的结果传递给嘲笑服务(虽然这个测试不会增加太多价值)。

完整来说,如果您真的想按自己的方式检查传递给serviceBeingMocked()的值,则应该使用capture

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM