API 的集成与单元测试
Integration vs Unit tests for APIs
我们能否考虑将请求发送到端点、单元或集成测试?
import lib from 'testing-lib';
// ...
const { testClient, expect } = lib;
const response = testClient
.request(app)
.get('/test/endpoint/');
// ...
expect(response).fulfills.some.condition.ok
我感觉这是一个集成测试,因为它将确定在请求发出和响应返回之间的每一部分都按预期工作。我需要知道我模糊的理解是否正确,或者我是否遗漏了一些细节。
是的,这更像是一个集成测试。
单元测试更像是功能性业务逻辑测试。例如,在您的路由处理程序(控制器)收到请求并调用服务来处理逻辑之后。
对该逻辑的测试是单元测试。
集成测试正在检查数据流是否正常工作。
我都不选。这是一个 功能性 测试。
单元测试 测试代码单元。由此得名。一个代码单元通常是一个函数,class 或某种模块。
集成测试 验证我们的代码单元是否按预期协同工作。但它仍然只是测试代码。
功能测试 通过暴露的接口测试处于部署状态的实际软件。
因此,在 Node 中,单元测试可能会单独测试您的 JavaScript 模块之一并模拟依赖项。集成测试将测试您的模块是否协同工作,并且只会模拟系统的极端边缘。功能测试将测试特定端点是否通过 HTTP 工作并且不会模拟任何东西。
我要补充一点,我鼓励在编写测试时坚持 DRY 原则。如果你有一个验证事物的单元测试,你不需要在集成测试中验证它。只需验证这些单元是否按预期协同工作。功能测试也是如此。不要验证集成,即单元协同工作。验证端点是否映射到预期行为。
我们能否考虑将请求发送到端点、单元或集成测试?
import lib from 'testing-lib';
// ...
const { testClient, expect } = lib;
const response = testClient
.request(app)
.get('/test/endpoint/');
// ...
expect(response).fulfills.some.condition.ok
我感觉这是一个集成测试,因为它将确定在请求发出和响应返回之间的每一部分都按预期工作。我需要知道我模糊的理解是否正确,或者我是否遗漏了一些细节。
是的,这更像是一个集成测试。
单元测试更像是功能性业务逻辑测试。例如,在您的路由处理程序(控制器)收到请求并调用服务来处理逻辑之后。 对该逻辑的测试是单元测试。
集成测试正在检查数据流是否正常工作。
我都不选。这是一个 功能性 测试。
单元测试 测试代码单元。由此得名。一个代码单元通常是一个函数,class 或某种模块。
集成测试 验证我们的代码单元是否按预期协同工作。但它仍然只是测试代码。
功能测试 通过暴露的接口测试处于部署状态的实际软件。
因此,在 Node 中,单元测试可能会单独测试您的 JavaScript 模块之一并模拟依赖项。集成测试将测试您的模块是否协同工作,并且只会模拟系统的极端边缘。功能测试将测试特定端点是否通过 HTTP 工作并且不会模拟任何东西。
我要补充一点,我鼓励在编写测试时坚持 DRY 原则。如果你有一个验证事物的单元测试,你不需要在集成测试中验证它。只需验证这些单元是否按预期协同工作。功能测试也是如此。不要验证集成,即单元协同工作。验证端点是否映射到预期行为。