Как ожидать результата при тестировании контроллера в Nest.js?

#typescript #jestjs #nestjs

Вопрос:

тест.контроллер.ts

 import { Controller, Get, Res } from '@nestjs/common';

@Controller('test')
export class TestController {
  @Get()
  check(@Res() response) {
    response.status(200).send();
  }
}
 

test.controller.spec.ts

 import { Test, TestingModule } from '@nestjs/testing';
import { TestController } from './test.controller';

describe('TestController', () => {
  let controller: TestController;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      controllers: [TestController],
    }).compile();

    controller = module.get<TestController>(TestController);
  });
  
  describe('check', () => {
    it('should return status 200', async () => {
      const result = 'test'

      expect(await controller.check()).toBe(result);
    });
  )
});
 

Текущий код выглядит так.
Я хочу статус 200, но я не знаю, как ожидать результата в этом случае.

Ответ №1:

Во-первых, проще вернуть код ответа «способом NestJS».:

 @Get()
@HttpCode(200)
check(@Res() response) {
    // My Result
}
 

В ходе тестирования Вы можете ожидать цепочки :

 expect(200).expect(...MoreChecks)
 

Или в быстром:

 expect(result.statusCode).toEqual(200)
 

Но есть намного больше выражений, отличающихся от Fastify
Пожалуйста, Обратитесь К : https://docs.nestjs.com/fundamentals/testing

Комментарии:

1. Спасибо! Если я добавлю @HttpCode(200) , мне это не нужно response.status(200).send(); ?

2. @Бери Да, тебе это не нужно

3. Я понял, спасибо. Итак, что еще я должен написать?

4. @Возьми Извини, чего ты хочешь больше ? или что ты собираешься делать ?

5. Извините. Я просто хочу вернуть статус 200. Так что же мне написать вместо response.status(200).send(); этого ?