Para testar a API do NestJS para verificar se o middleware Utf8Middleware
está funcionando, você pode usar uma biblioteca de testes HTTP, como o supertest
, para fazer solicitações HTTP à sua API e verificar as respostas. Abaixo está um exemplo de como você pode fazer isso:
Suponha que você tenha uma rota em seu controlador que utilize o middleware Utf8Middleware
. Por exemplo:
import { Controller, Post, Req, Res } from '@nestjs/common';
('example')
export class ExampleController {
('endpoint')
async postData() {
() req, () resreturn 'Data received successfully';
}
}
Aqui está um exemplo de como você pode testar essa rota usando o supertest
:
- Instale o
supertest
se ainda não o fez. Você pode instalá-lo com o npm ou yarn:
npm install supertest --save-dev
- Crie um arquivo de teste para a rota que utiliza o middleware em sua pasta de testes. Por exemplo,
utf8-middleware.e2e-spec.ts
:
import { Test, TestingModule } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import * as request from 'supertest';
import { AppModule } from './../src/app.module';
describe('Utf8Middleware', () => {
let app: INestApplication;
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
afterAll(async () => {
await app.close();
});
it('should return 415 if Content-Type is not UTF-8', () => {
return request(app.getHttpServer())
.post('/example/endpoint') // Replace with the actual endpoint
.set('Content-Type', 'application/json; charset=iso-8859-1') // Set an unsupported charset
.send({ data: 'your-data' })
.expect(415)
.expect('Unsupported Media Type. Use UTF-8 encoding.');
});
it('should pass through if Content-Type is UTF-8', () => {
return request(app.getHttpServer())
.post('/example/endpoint') // Replace with the actual endpoint
.set('Content-Type', 'application/json; charset=utf-8') // Set UTF-8 charset
.send({ data: 'your-data' })
.expect(200)
.expect('Data received successfully');
});
});
Aqui, estamos testando a rota /example/endpoint
duas vezes: uma vez com um cabeçalho Content-Type
inválido e outra vez com um cabeçalho Content-Type
válido.
Lembre-se de ajustar o código de teste e os caminhos das rotas conforme a estrutura do seu projeto. Isso ajudará a garantir que o middleware Utf8Middleware
está funcionando conforme o esperado.