栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Mockito测试REST服务?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Mockito测试REST服务?

好。因此,该方法的约定如下:将输入字符串解析为JSON,

BAD_REQUEST
如果无效,则将其发送回。如果有效,请在中创建
datastore
具有各种属性的实体(您知道它们),然后将其发送回去
OK

并且您需要验证该方法是否满足了该合同。

Mockito在这里有什么帮助?好吧,如果您在没有Mockito的情况下测试此方法,则需要一个real

DataStoreService
,并且需要验证已在此real中正确创建了实体
DataStoreService
。这是您的测试不再是单元测试的地方,这也是测试太复杂,太长且难以运行的原因,因为它需要一个复杂的环境。

Mockito可以通过

DataStoreService
模拟对的依赖来提供帮助:您可以创建的模拟
DataStoreService
,并
initialize()
在测试中调用方法时验证是否确实使用适当的entity参数调用了该模拟。

为此,您需要能够将注入

DataStoreService
到被测对象中。可以通过以下方式重构对象一样简单:

public class MyRestService {    private DataStoreService dataStoreService;    // constructor used on the server    public MyRestService() {        this.dataStoreService = DatastoreServiceFactory.getDatastoreService();    }    // constructor used by the unit tests    public MyRestService(DataStoreService dataStoreService) {        this.dataStoreService = dataStoreService;    }    public Response initialize(String DatabaseSchema) {         ...         // use this.dataStoreService instead of datastore    }}

现在,在您的测试方法中,您可以执行以下操作:

@Testpublic void testInitializeWithGoodInput() {    DataStoreService mockDataStoreService = mock(DataStoreService.class);    MyRestService service = new MyRestService(mockDataStoreService);    String goodInput = "...";    Response response = service.initialize(goodInput);    assertEquals(Response.Status.OK, response.getStatus());    ArgumentCaptor<Entity> argument = ArgumentCaptor.forClass(Entity.class);    verify(mock).put(argument.capture());    assertEquals("the correct kind", argument.getValue().getKind());    // ... other assertions}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/570240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号