【发布时间】:2016-08-16 20:05:14
【问题描述】:
在使用 WireMock 模拟预期返回 JSON 的端点时,我遇到了一个问题,即它不会返回预期的 JSON。查询 WireMock 的存根将在预期的端点显示正确的 JSON。
在针对我的理论运行多个数据点时,我通常会在此问题发生并且测试失败之前成功通过 7 次测试。但是,在理论的顶部添加大约 5 秒的睡眠可以让所有测试通过。将测试的内容包装在一个循环中将使其多次运行一个数据点,最终失败。添加睡眠将允许它进一步运行,但最终它会提供一个空值。
这是一个已知问题吗?有合适的解决方法吗?
【问题讨论】:
-
如果您没有显示代码,我们如何提供帮助..
-
@Javant 这个问题似乎只在整个项目中表现出来。我编写的每一个使用相同管道的小型概念验证测试都会成功。我必须提供整个项目,这是我做不到的。
-
您是否动态添加存根(是否存在内存泄漏的可能性)?你能识别失败的请求吗?看看手动查询是否可以重现问题。如果不是,请尝试使用相同的请求模拟高负载场景。
-
@EugeneA 存根是动态添加的,但存根添加的次数无关紧要。也就是说,清除存根并在 Before、BeforeClass 或理论本身中读取它们不会改变其行为。失败的请求是第八个,除非添加了睡眠。即使在另一台以不同顺序运行数据点的计算机上也是如此(这意味着它在不同的数据点上失败)。
-
尝试在调试模式下运行 Wiremock,看看这个 null 是否会在日志中产生异常。如果是这样,调试 Wiremock 并查看导致空响应的条件应该不难。