前端测试-模拟服务器响应-JSON生成器与静态响应

时间:2018-08-15 04:29:17

标签: javascript unit-testing mocking frontend

我有一台服务器,可以根据HTTP请求执行一些复杂的业务逻辑操作。我想使用该服务器为前端编写单元测试和功能测试。在网上阅读了很多书后,我发现有很多方法可以实现这一目标,我认为最适合我们的情况有两种:

  1. 保存静态响应-对于我要测试的每种情况,记录服务器响应,将响应保存在存储库中的文件中,并在测试中使用。
  2. 创建一个json响应生成器,我可以轻松地在运行中轻松创建内容以进行测试。

我分别看到的利弊: 对于静态文件:

专家:给出了用于记录后端响应的正确设置-应该相当容易实施新测试。

缺点::如果API发生更改,那么我就没有办法映射使用该API并知道更新测试的所有文件。其结果是,甚至很难知道支持这种更改所需的更改范围。

对于JSON生成器:

优点:只需一处即可轻松更改API响应。

缺点:为此进行的准备工作要复杂得多,要花些时间才能轻松快速地添加测试。

当然每种都有优点和缺点,但是在我看来,这是两个之间最矛盾的地方。

我的问题是这些

  1. 还有更多我们忽略的选择吗? (我不希望单元测试通过网络来模拟服务器)
  2. 您推荐哪两个?为什么?
  3. 最佳做法是什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

我会说这将属于集成测试类别。您的测试(理想情况下)不应该进行外部网络调用-前端或后端-因此,对数据进行模拟是必经之路。我将分享您的两个选择:

静态响应-这是最简单的方法,只要实际服务器响应的相差不大,就不会出错。在此处,将静态响应与“真实” API同步变得至关重要。您需要与开发API本身的团队紧密沟通,或者像您所说的那样,设计一种检测相关更改的方法。

响应生成器-我认为这是更可靠的方法,因为对API的任何更改都将反映在生成的响应中。它也与测试的集成方面有关,因为如果响应是由运行API的相同代码生成的,则可以确保包含所有新更改。

我建议您通过后端代码生成响应,并将集成测试合并到您的构建步骤中。话虽这么说,如果您在一个前端团队中使用不断变化的API而不需要团队知识,也许您需要研究您的通信方法,以便两个团队可以同步并最大程度地减少意外更改。