如何在不启动服务器的情况下编写 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