CRM complete.
A spec não apresenta erro quando a spec estiver imcompleta. Mas se começar apresentar erro então pode ser que a spec possa ser gerada automaticamente. Por isso dedicar uma atenção especial ao escrever a spec. Assim a spec deve ser escrita por uma pessoa de confiança do projeto para que trate corretamente o código. Por exemplo, expect(result).toBe(mockMessage);
e response.status(201).send() \n return this.appService.getHello();
valida que existe a resposta mas essa resposta nunca chega no browser.
Parei na leitura e escuta da documentação em Controllers/Resources (https://docs.nestjs.com/controllers#resources).
Handler: Manipulador;
- Fazer tests watchs com snapshots. Pesquisar no copilot Windows.
nest g resource [name]
nest g controller [name]
@HttpCode(NUMBER) // controllers decorators
getHello(@Next() _) // Method Controller Full; import Res from '@nestjs/common'
getHello(@Next() _, @Res({ passthrough: true }) res, @Req() req) // My Controller Method Default
-
Usar o response do Express
-
- Texto da documentação
Podemos usar o objeto de resposta específico da biblioteca (por exemplo, Express), que pode ser injetado usando o decorador @Res()
na assinatura do manipulador de método (por exemplo, findAll(@Res() response)
). Com essa abordagem, você tem a capacidade de usar os métodos de manipulação de resposta nativos expostos por esse objeto. Por exemplo, com o Express, você pode construir respostas usando código como response.status(200).send()
.
https://expressjs.com/en/api.html#res
-
- Codes 1
-
-
- Controller
-
import { ..., Res } from '@nestjs/common';
...
constructor(private readonly appService: AppService) {}
...
getHello(@Res() response):...// esse response simula o res do Express
response.status(200).send()
return this.appService.getHello();// essa linha não executa #BUG do framework
...
-
-
- Spec
-
...
it('should return response with status 200 and return hello message', () => {
const mockMessage = 'Hello World!';
const dummyResponse = {
status: jest.fn().mockReturnThis(),
send: jest.fn().mockReturnThis(),
};
jest.spyOn(appService, 'getHello').mockReturnValue(mockMessage);
const result = appController.getHello(dummyResponse);
expect(dummyResponse.status).toHaveBeenCalledWith(200);
expect(dummyResponse.send).toHaveBeenCalled();
expect(result).toBe(mockMessage);
...
-
- Codes 2
-
-
- Controller
-
...
import { Response } from 'express';
...
getHello(@Res() response: Response)...
response.status(201).send()
...
-
-
- Spec
-
...
appController.getHello(dummyResponse as any);
...