如何解决模拟链接的其余客户端呼叫Mockito
我正在尝试嘲弄这个家伙。我让Mockito通过Surefire受到祝福:
@Inject
private javax.ws.rs.client.Client client;
...
String response = client.target(url).request(MediaType.APPLICATION_JSON).post(Entity.entity(request,MediaType.APPLICATION_JSON),String.class);
导致一些非常糟糕的嘲笑:
doReturn(mockWebTarget).when(mockClient).target(url);
doReturn(mockBuilder).when(mockWebTarget).request(MediaType.APPLICATION_JSON);
doReturn(response).when(mockBuilder).post(any(Entity.class),eq(String.class)); // <- really need to inspect that entity
客户端已注入(春季)。运行时没有问题,但测试很痛苦。
- 样板其余客户链
- 必须验证嵌套对象以发布()
- 宁愿避免链接模拟物
- 链具有多个类(即不是典型的生成器)
- 链接的模拟故障仅给出空指针异常以进行诊断
- 脆弱,维护失败,无济于事
我的主要问题是是否有任何问题,当模拟返回失败并且我在链中取消引用时,它只会抛出null。
这有一个好的模式吗?
- 编辑-
实现了我的愿望
被发现的绑架者,我想我现在明白了。
方法是使用很多any()匹配器来遍历整个链。这基本上会使链式通话崩溃,因此我可以担心进入和退出点。
然后,我可以使用verify()和绑带者追溯捕获该链的末端,以在事实发生后检查中间的post(),并最终摆脱困境。
还有机会查看链中添加的参数并尝试减少它们-在我的情况下,我可以将post(entity,String.class)替换为postJson(entity)。甚至都不知道替代方案的存在。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。