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, () res) {
    return 'Data received successfully';
  }
}
Aqui está um exemplo de como você pode testar essa rota usando o supertest:
- Instale o supertestse 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.