¿Necesito escribir una prueba para el siguiente código?
@Post() update(@Body() updateUserDto: UpdateUserDto, @Request() req) { return this.userService.update(req.user.user, updateUserDto); }Voy a hacer algunas suposiciones sobre las propiedades inyectadas de la clase de controlador. Para configuraciones completas, puede ver mi repositorio de ejemplo de prueba aquí . Sin embargo, esto debería ser esencialmente lo que estás buscando.
describe('UserController (Unit)', () => { let controller: UserController; let service: MockedClass<UserService>; beforeAll(async () => { const modRef = await Test.createTestingModule({ controllers: [UserController], providers: [ { provide: UserService, useValue: { update: jest.fn().mockReturnValue({ hello: 'world' }), }, } ], }).compile(); controller = modRef.get(UserController); service = modRef.get(UserService); }); it('should call update and return the value', () => { const bodyVal = objectThatMatchesUpdateUserDto; const reqVal = { user: { user: valueThatMatchesReqUserUser } }; const res = controller.update(bodyVal, reqVal); expect(res).toEqual({ hello: 'world' }); expect(service.update).toBeCalledWith(reqVal.user.user, bodyVal) }); });