为什么使用supertest代替expressJS的单元测试?

时间:2015-12-07 16:25:37

标签: node.js unit-testing testing mocha supertest

在搜索如何测试我的node.js软件时,我提出了很多建议使用Supertest的答案。

在使用Supertest之前,我正在以这种方式测试我的应用程序:

app.get('/', base_road);
function base_road(req, res) {
   return res.json("Hello world");
}

it("base road", function() {
  base_road(mocked_req, {json: function(data) {
      assert.isEqual(data, "Hello world");
  }});
});

我对这种测试方式并不满意,因为嘲弄可能变得非常难以阅读,但我觉得如果我使用超级单词,我会比单元测试更接近e2e。

我应该使用supertest进行单元测试吗? 我测试我的应用程序的实际方法是否正确?

1 个答案:

答案 0 :(得分:0)

supertest是用于集成测试(而非单元测试和e2e测试)的库。

  

集成测试将经过单元测试的输入模块作为其输入模块,将它们分组为较大的聚合,将集成测试计划中定义的测试应用于这些聚合,并将集成系统作为输出提供以进行系统测试。

它可以用于API自动化测试。

单元测试和集成测试没有冲突。对于Node.js Express Web应用程序,应同时编写两者以确保软件质量。它们不是替代关系,而是共存关系和依赖关系

此图显示了这些测试之间的关系:

enter image description here