当前位置:  开发笔记 > 编程语言 > 正文

EasyMock期望方法在同一测试中返回多个不同的对象

如何解决《EasyMock期望方法在同一测试中返回多个不同的对象》经验,为你挑选了2个好方法。

我正在使用EasyMock对我的Java代码进行单元测试.我正在尝试测试的类是RESTful webservice API层.API有一个底层服务层,在API测试中被模拟.我的问题是弄清楚如何正确地单元测试我的editObject(ID, params...)API方法,因为它调用service.getById()两次并期望每次调用都返回一个不同的对象.

editObject(ID, params...)首先尝试从服务层获取对象以确保ID有效(首先service.getById(ID)调用expect,返回原始未修改对象).接下来,它修改API调用中指定的参数,将其保存到服务,然后再次调用get将调用者交给服务管理的修改对象(第二次service.getbyId(ID)调用expect,返回修改后的对象).

有没有办法用EasyMock表示这个?



1> Mark Peters..:

当然,对于具有相同方法和参数的两个方法调用,您可以执行两个不同的操作.只需按照您期望的顺序声明您的期望,并相应地设置响应.

expect(mockService.getById(7)).andReturn(originalObject).once();
expect(mockService.getById(7)).andReturn(modifiedObject).once();
replay(mockService);

.once()是可选的,但我发现在这种情况下,它更自我记录.



2> eee..:

您可以链接多个andReturn方法调用:

EasyMock.expect(service.getById(1))
    .andReturn(firstObject)
    .andReturn(secondObject);

第一次service.getById调用with 1参数,mock将返回firstObject第二次secondObject.您可以根据需要链接任意数量,甚至可以andThrow针对特定呼叫抛出异常.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有