我的控制器中只有以下方法。
@Controller()
export class AppController {
@Get('whoami')
@Roles(Role.All)
@ApiResponse({ status: 200, type: User })
currentUser(@Req() request: Request) {
return request.user;
}
}
我在下面寫同樣的測驗用例。
describe('AppController', () => {
let controller: AppController;
beforeAll(async () => {
const app: TestingModule = await Test.createTestingModule({
controllers: [AppController],
}).compile();
controller = app.get<AppController>(AppController);
});
it('should be defined', () => {
expect(controller).toBeDefined();
});
it('currentUser should be called', () => {
expect(controller.currentUser).toBeDefined();
expect(controller.currentUser).toEqual("shruti");
});
});
這不僅失敗了,而且也 return request.user;沒有被覆寫。下面是錯誤。

我做錯了什么?
uj5u.com熱心網友回復:
controller.currentUser是一個函式。它接受Request物件并回傳request.user。你的測驗應該看起來像
it('currentUser should be called', () => {
expect(controller.currentUser).toBeDefined();
expect(controller.currentUser({ user: "shruti" } as any)).toEqual("shruti");
});
這里as any是必要的,因為Request它具有更多的屬性,user但您所有的測驗和代碼關心的是user要回傳的屬性。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/491200.html
標籤:javascript 单元测试 测试 开玩笑的 巢穴
