gpt4 book ai didi

java - 在 Play Framework 2.0 中测试异步 Web 服务调用

转载 作者:行者123 更新时间:2023-11-30 07:11:40 25 4
gpt4 key购买 nike

我的玩法有很多底层方法! 2.0 应用程序 (Java) 正在调用外部 Web 服务(具体来说是通过 REST 的 Neo4j)。他们每个人都返回一个 Promise<WS.Response> .为了测试这些方法,我目前正在安装 Callback<WS.Response>通过 onRedeem 返回值. Callback s 包含对个人执行的断言 WS.Response秒。每个测试都依赖于我通过 setUpClass 安装/删除的一些特定装置和 tearDownClass , 分别。

我面临的问题是,由于我的测试代码是完全异步的,拆卸逻辑最终会在所有Callback 之前被调用。我们有机会运行。因此,并非所有固定装置都被删除,并且数据库处于与运行测试之前不同的状态。

解决此问题的一种方法是调用 get()Promise 上有一些任意超时正在测试的函数返回的对象,但该解决方案对我来说似乎相当脆弱且不可靠。 (如果由于某种不受我的应用程序控制的原因,Web 服务调用没有在超时内完成怎么办?在这种情况下,即使我的代码实际上是正确的,我的测试也会失败或出错。)

所以我的问题是:是否有一种方法可以测试调用外部 Web 服务的代码,该代码是非阻塞的并且仍然确保数据库的一致性?如果没有,上述两种方法中哪一种是测试此类代码的“规范”/可接受的方法?

最佳答案

What if, for some reason not under my application's control, the Web Service calls do not complete within the timeout?

这对调用外部 Web 服务的任何测试来说都是一个问题,无论是否异步。这就是为什么您应该以某种方式模拟您的 Web 服务调用,要么使用伪造的 Web 服务,要么使用访问 Web 服务的代码的伪造实现。

您可以使用例如用于那个的 Betamax。

我以前写过异步代码的测试代码,我相信你的“脆弱”方法实际上是正确的。

关于java - 在 Play Framework 2.0 中测试异步 Web 服务调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20933598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com