Я пытаюсь проверить маршруты моего API с Мокко и Чай, но все, что я получаю, это "TypeError".
Вот мой файл main.ts:
import { NestFactory } from '@nestjs/core';
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { AppModule } from './app.module';
export async function bootstrap(): Promise<any> {
const app = await NestFactory.create(AppModule);
const options = new DocumentBuilder()
.setTitle('Cats example')
.setDescription('The cats API description')
.setVersion('1.0')
.addTag('cats')
.build();
const document = SwaggerModule.createDocument(app, options);
SwaggerModule.setup('api', app, document);
return await app.listen(3000);
}
const appServer = bootstrap();
export default appServer;
Первоначальнофункция "начальной загрузки" ничего не возвращала, но я заставил ее вернуть app.listen, чтобы в конце экспортировать ее.
Вот мой тестовый файл:
import * as chai from 'chai';
import chaiHttp = require('chai-http');
import 'mocha';
import appServer from '../src/main';
chai.use(chaiHttp);
describe('first test', () => {
it('should return hello world', async () => {
const res = await chai.request(appServer).get('/notes');
chai.expect(res.text).to.equal('hello');
});
});
Вот чтоЯ получаю, когда бездельничает "испытание npm". Ошибка возникает в файле "node_modules / chai-http / lib / request.js".
Ошибка типа: app.address () не является функцией
Я пыталсяв console.log (приложение) в файле «request.js», и это то, что я получил
обещание {}
И я тоже пыталсяпрямо в main.ts
console.log(app.address())
Но Visual Code немедленно предупреждает меня об этой ошибке
Свойство 'address' не существует для типа 'INestApplication'.ts (2339)
Совместим ли NestFactory с Chai? Такое ощущение, что «приложение», которое я экспортирую в «main.ts», не соответствует потребностям Shai. Я в замешательстве.
Вот отредактированное принятое решение для правильной работы
import * as chai from 'chai';
import chaiHttp = require('chai-http');
import 'mocha';
import { AppModule } from '../src/app.module';
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
chai.use(chaiHttp);
describe('first test', () => {
let app: INestApplication;
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = module.createNestApplication();
await app.init();
});
afterEach(async () => {
await app.close();
});
it('should return hello world', async () => {
const res = await chai.request(app.getHttpServer()).get('/notes');
chai.expect(res.text).to.equal('hello');
});
});