API 的集成与单元测试

Joh*_*uma 8 javascript integration-testing unit-testing node.js chai

我们可以考虑向端点发送一个单元或集成测试的请求吗?

import lib from 'testing-lib';
// ...
const { testClient, expect } = lib;
const response = testClient
    .request(app)
    .get('/test/endpoint/');
// ...

expect(response).fulfills.some.condition.ok
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,这是一个集成测试,因为它将确定在发出请求和返回响应之间的每一部分都按预期工作。我需要知道我模糊的理解是否正确,或者我是否遗漏了一些细节。

Guy*_*yse 6

我不会去。这是一个功能测试。

单元测试测试代码单元。由此得名。代码单元通常是某种函数、类或模块。

集成测试验证我们的代码单元是否按预期协同工作。但它仍然只是测试代码。

功能测试通过公开的接口测试处于部署状态的实际软件。

因此,在 Node 中,单元测试可能会单独测试您的一个 JavaScript 模块并模拟依赖项。集成测试将测试您的模块是否可以协同工作,并且只会模拟系统的极端边缘。功能测试将测试特定端点是否通过 HTTP 工作,并且不会模拟任何内容。

我要补充一点,我鼓励在编写测试时坚持 DRY 原则。如果你有一个单元测试来验证一个东西,你不需要在集成测试中验证它。只需验证这些单元是否按预期协同工作。功能测试也是如此。不要验证集成,单元​​协同工作。验证端点是否映射到预期行为。


kut*_*syk 5

是的,这更像是一个集成测试。

单元测试更像是功能业务逻辑测试。例如,在您的路由处理程序(控制器)收到请求并调用 Service 来处理逻辑后。该逻辑的测试是单元测试。

集成测试正在检查数据流是否正常工作。

  • 向端点发送请求并测试整个应用程序中的数据流实际上更像是端到端测试。 (2认同)