我需要为我的Node.js API实现单元测试。在API中,我只使用普通的Node.js。测试框架是Jest。我现在有测试,但它们都要求服务器在运行测试之前启动(我使用超测试)。
所以问题是我如何测试API端点而不实际运行服务器?
那么问题是我如何在不实际运行服务器的情况下测试API端点?
我会用nock。它是一个用于Node.js的HTTP服务器模拟库。
Nock可用于测试隔离执行HTTP请求的模块。
请参阅用法文档。
const nock = require('nock')
const scope = nock('https://api.github.com')
.get('/repos/atom/atom/license')
.reply(200, {
license: {
key: 'mit',
name: 'MIT License',
spdx_id: 'MIT',
url: 'https://api.github.com/licenses/mit',
node_id: 'MDc6TGljZW5zZTEz',
},
})
基本上你为一个给定的URL创建一个模拟作用域,然后任何向模拟作用域发出HTTP请求的测试都将被nock
拦截。
你可能想在beforeAll
或beforeEach
Jest块中设置你的模拟作用域。