Jest.js NestJS E2E测试错误:未指定默认引擎且未提供扩展

ffscu2ro  于 2023-08-01  发布在  Jest
关注(0)|答案(1)|浏览(108)

我目前正在使用Jest对NestJS应用程序进行端到端测试,我遇到了测试环境设置的问题。我使用supertest进行HTTPAssert,我的模板是用hbs呈现的。
以下是我使用的包的版本:

NestJS: 10
supertest: 6.3
Jest: 29.5
hbs: 4.2

字符串
当我使用node run test:e2e运行e2e测试时,会发生错误。但是,当我正常运行应用程序时,一切工作正常。下面是我的main.ts

async function bootstrap() {
  const app = await NestFactory.create<NestExpressApplication>(AppModule);
  app.setBaseViewsDir(join(__dirname, '..', 'views'));
  app.setViewEngine('hbs');

  await app.listen(3000);
}
bootstrap();


这里是app.controller.ts

@Get()
@Render('index')
root() {
    return { message: 'Hello world!' };
}


我的app.e2e-spec.ts

describe('AppController (e2e)', () => {
  let app: INestApplication;

  beforeEach(async () => {
    const moduleFixture: TestingModule = await Test.createTestingModule({
      imports: [AppModule],
    }).compile();

    app = moduleFixture.createNestApplication();
    await app.init();
  });

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


我是否需要为测试环境做一些额外的设置来识别视图引擎?提前致谢

polhcujo

polhcujo1#

你已经在bootstrap函数中调用了app.setViewEngine(),但是你没有在你的测试套件文件中调用bootstrap函数。我不明白你为什么觉得这会有用
我猜您只需要将app.setViewEngine()也添加到您的app.e2e-spec.ts即可

相关问题