如何在不启动服务器的情况下编写 api 请求测试?
How to write api request tests without launching server?
可以在端口上启动服务器并使用库“supertest”对其进行测试。
我想知道如果没有 运行 服务器是否可以做同样的事情?
Express 应用程序,与 fastify 应用程序或其他应用程序相同,从底层的本地节点获取请求和响应参数,如下所示:
const server = http.createServer((req, res) => {
res.end('hello\n');
});
因此应该可以直接从测试中调用该回调。
如何获得回调?是否有任何工具包可以帮助构建回调的请求和响应对象?
原因 - 只是为了让测试更快。由于我不想测试 HTTP 协议和节点的内部结构,我想通过跳过它来节省时间。
Fastify 有 this feature out of the box:
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
test('requests the "/" route', async t => {
const fastify = Fastify()
fastify.get('/', function (request, reply) {
reply.send({ hello: 'world' })
})
const response = await app.inject({
method: 'GET',
url: '/'
})
t.strictEqual(response.statusCode, 200, 'returns a status code of 200')
})
为了移动 req/resp 对象,它在幕后使用 light-my-request
可以在端口上启动服务器并使用库“supertest”对其进行测试。 我想知道如果没有 运行 服务器是否可以做同样的事情?
Express 应用程序,与 fastify 应用程序或其他应用程序相同,从底层的本地节点获取请求和响应参数,如下所示:
const server = http.createServer((req, res) => {
res.end('hello\n');
});
因此应该可以直接从测试中调用该回调。 如何获得回调?是否有任何工具包可以帮助构建回调的请求和响应对象?
原因 - 只是为了让测试更快。由于我不想测试 HTTP 协议和节点的内部结构,我想通过跳过它来节省时间。
Fastify 有 this feature out of the box:
'use strict'
const { test } = require('tap')
const Fastify = require('fastify')
test('requests the "/" route', async t => {
const fastify = Fastify()
fastify.get('/', function (request, reply) {
reply.send({ hello: 'world' })
})
const response = await app.inject({
method: 'GET',
url: '/'
})
t.strictEqual(response.statusCode, 200, 'returns a status code of 200')
})
为了移动 req/resp 对象,它在幕后使用 light-my-request