デフォルトのHTTPプロバイダであるExpressから変更することで、
HTTPプロバイダとしてFastifyを使用するようにします。
ここでは、下記の内容を前提としています。
手順
以下のコマンドで、不要なパッケージをアンインストールする。
npm uninstall @nestjs/platform-express
npm uninstall @types/express
以下のコマンドで、必要なパッケージをインストールする。
npm install @nestjs/platform-fastify
src/main.tsを以下のように編集する。
import { NestFactory } from '@nestjs/core';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import { AppModule } from './app.module';
async function bootstrap() {
const app = await NestFactory.create<NestFastifyApplication>(
AppModule,
new FastifyAdapter(),
);
await app.listen(3000);
}
bootstrap();
test/ping/ping.e2e-spec.tsを以下のように編集する。
import { Test, TestingModule } from '@nestjs/testing';
import {
FastifyAdapter,
NestFastifyApplication,
} from '@nestjs/platform-fastify';
import * as request from 'supertest';
import { AppModule } from '../../src/app.module';
describe('PingController (e2e)', () => {
let app: NestFastifyApplication;
beforeEach(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication<NestFastifyApplication>(
new FastifyAdapter(),
);
await app.init();
await app.getHttpAdapter().getInstance().ready();
});
test('/ping (GET)', () => {
return request(app.getHttpServer()).get('/ping').expect(200).expect('pong');
});
});
参考
- Documentation | NestJS – A progressive Node.js framework
https://docs.nestjs.com/techniques/performance - node.js – End-to-end testing NestJS with Fastify: “@nestjs/platform-express” package is missing” error – Stack Overflow
https://stackoverflow.com/questions/70041367/end-to-end-testing-nestjs-with-fastify-nestjs-platform-express-package-is-mi