expect(jest.fn()).toHaveBeenCalledWith(...expected)



我正在尝试为用NEST.JS编写的控制器编写单元测试以下是单元测试未通过的登录方法

@Post('login')
async login(@Body() payload: LoginPayload): Promise<any> {
this.logger.info("Calling Loging");
this.logger.debug("Calling Loging");
const user = await this.authService.validateUser(payload);
return await this.authService.createToken(user);
}

上面代码的单元测试是在JEST框架中编写的。

beforeEach(async () => {
// createInputDetails() Functions initializes the LoginPayload, RegisterPayload and User Object
createInputDetails();
module = await Test.createTestingModule({
controllers: [AuthController],
providers: [
{
provide: AuthService,
useFactory: () => ({
createToken: jest.fn(() => true),
validateUser: jest.fn(() => true),
}),
},
{
provide: UserService,
useFactory: () => ({
get: jest.fn(() => true),
getByEmail: jest.fn(() => true),
getByEmailAndPass: jest.fn(() => true),
create: jest.fn(() => true),
}),
},
],
}).compile();
controller = module.get<AuthController>(AuthController);
authService = module.get<AuthService>(AuthService);
userService = module.get<UserService>(UserService);
});
describe('login', () => {
it('should validate user', async () => {
controller.login(loginPayload);
expect(authService.validateUser).toHaveBeenCalledWith(loginPayload);
expect(authService.createToken).toHaveBeenCalledWith(user);
})
})

我得到了以下错误。需要知道我在这里错过了什么吗?

expect(jest.fn()).toHaveBeenCalledWith(...expected)
Expected: {"email": "abc@xyz.com", "firstName": "abc", "lastName": "pqr", "password": "Test@1234", "profile": {"age": 32, "nickname": "abc"}, "userId": 14}
Number of calls: 0
96 |       controller.register(registerPayload);
97 |       // expect(userService.create).toHaveBeenCalledWith(registerPayload);
>  98 |       expect(authService.createToken).toHaveBeenCalledWith(user);
|                                       ^
99 |     })
100 |   })
101 | 
at Object.it (modules/auth/auth.controller.spec.ts:98:39)

您的controller.login方法是异步的,因此您应该是await controller.login(registerPayload),而不是直接调用它。我有一种感觉,你开玩笑不是在等待nextTick的处理,而是在不让控制器方法运行其分段的情况下继续前进

相关内容

  • 没有找到相关文章

最新更新