1

我有使用 Fastify 的新 NestJS 应用程序。尝试时npm run test:e2e出现以下错误:

[Nest] 14894   - 11/19/2021, 10:29:10 PM   [ExceptionHandler] The "@nestjs/platform-express" package is missing. Please, make sure to install this library ($ npm install @nestjs/platform-express) to take advantage of NestFactory.
  ●  process.exit called with "1"

      12 |     }).compile();
      13 | 
    > 14 |     app = moduleFixture.createNestApplication();
         |                         ^
      15 |     await app.init();
      16 |   });
      17 | 

      at Object.loadPackage (../node_modules/@nestjs/common/utils/load-package.util.js:13:17)
      at TestingModule.createHttpAdapter (../node_modules/@nestjs/testing/testing-module.js:25:56)
      at TestingModule.createNestApplication (../node_modules/@nestjs/testing/testing-module.js:13:43)
      at Object.<anonymous> (app.e2e-spec.ts:14:25)

 RUNS  test/app.e2e-spec.ts

Process finished with exit code 1

看起来很奇怪,因为为什么基于 fastify 的应用程序需要 platform-express?

4

1 回答 1

2

看来切换到 Fastify 后我们也需要进行test/app.e2e-spec.ts相应的更新:

import { Test, TestingModule } from '@nestjs/testing';
import * as request from 'supertest';
import { AppModule } from '../src/app.module';
import { FastifyAdapter, NestFastifyApplication } from '@nestjs/platform-fastify';

describe('AppController (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();
  });

  afterEach(async () => {
    await app.close();
  });

  it('/ (GET)', () => {
    return request(app.getHttpServer()).get('/').expect(200).expect('Hello World!');
  });
});

于 2021-11-19T22:01:27.830 回答