【发布时间】:2021-02-22 19:43:27
【问题描述】:
我发现this question 是关于确定路线的。虽然第一个答案正是我所需要的,而且它有效
import { Controller, Get, Request } from "@nestjs/common";
import { Request as ExpressRequest, Router } from "express";
@Get()
root(@Request() req: ExpressRequest) {
const router = req.app._router as Router;
return {
routes: router.stack
.map(layer => {
if(layer.route) {
const path = layer.route?.path;
const method = layer.route?.stack[0].method;
return `${method.toUpperCase()} ${path}`
}
})
.filter(item => item !== undefined)
}
}
我希望能够对此进行单元测试。
我的端到端测试工作正常
it('/api (GET) test expected routes', async done => {
const ResponseData = await request(app.getHttpServer())
.get('/api')
.set('Accept', 'application/json');
expect(ResponseData.status).toBe(200);
expect(ResponseData.headers['content-type']).toContain('json');
expect(ResponseData.body.routes.length).toBeGreaterThan(2);
done(); // Call this to finish the test
});
我遇到的问题是如何创建和传递用于单元测试的 root() 调用所需的请求部分。 ExpressRequest 不是简单地创建然后分配值的类或任何东西。它目前是一个很大的定义。我想一定有一种简单的方法可以创建一个,但我还没有找到它。
【问题讨论】:
标签: testing routes jestjs nestjs