这是一种可能性!也许您正在使用像 Jasmine 这样的框架测试您的 JavaScript。这很好,因为您可以编写大量测试来覆盖您的应用程序,获得一个不错的 UI 来查看输出,甚至可以将其与构建和部署工具集成,使您的持续开发工作更安全。
现在,也许您的团队中有一位古怪的开发者不断更改您的 API 端点——实际上是在破坏代码。您决定编写一个测试来访问这些端点,并确保您获得预期的结果。这很简单。唯一有点棘手的是 API 请求是异步的。为了真正测试它,测试需要有某种方法在测试预期结果之前等待结果。
这可以通过 Jasmine 中的 beforeEach()
来处理,它可以等到您调用 done()
函数后才完成。以下是整个过程
查看 CodePen 上 Chris Coyier (@chriscoyier) 编写的
使用 Jasmine 测试端点。
在 CodePen 上。
以下是使用 Mocha/Chai 的大体相同内容
查看 CodePen 上 Chris Coyier (@chriscoyier) 编写的
使用 Mocha/Chai 测试端点。
在 CodePen 上。
这是一个很好的研究主题。意外更改端点很容易发生,并且可能产生重大影响。在过去的几年里,我将字符串状态更改为对象以包含更多信息。我们错过了更改,但客户很快就让我们知道了。
我有点喜欢 Frisby,因为它支持 JSON 模式、标头和状态代码,并具有简单的 DSL。
https://www.frisbyjs.com/
Jasmine 也支持 Promise 和 async/await:https://jasmine.org.cn/tutorials/async
比回调函数更容易使用。 :)
我不希望成为“那个人”,也不希望您批准此评论。但我认为这并不是“两种方法”,而只是一种方法。即使您使用两个不同的框架,您本质上所做的事情也是一样的。
我之所以这么说,是因为我很想知道第二种方法是什么,而不是明显的“发送请求,检查响应”。
无论如何,谢谢。
Baylor Rae’ 比我先建议了 FrisbyJS,所以我礼貌地 +1 这个建议。
我建议避免在客户端测试端点,除非它们是第三方库且不可靠。
理想情况下,API 应该有 SLA,如果它是内部的,则应该有后端测试。
否则,我建议坚持使用 Jest 进行测试。