【NestJS】HTTPプロバイダとしてFastifyを使用する

デフォルトの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');
  });
});

参考

タイトルとURLをコピーしました