#typescript #unit-testing #jestjs #nestjs
Вопрос:
Я столкнулся с ошибкой, когда пытался добавить некоторые тесты в свое приложение NestJS. Существует автоматически сгенерированный тестовый файл с именем app.controller.spec.ts, который является модульным тестом. Когда я пытаюсь запустить тесты с помощью команды yarn test, она выдает сообщение об ошибке:
Не удалось запустить набор тестов TypeError: значение расширения класса undefined не является конструктором или null
at Object.<anonymous> (../node_modules/@nestjs/testing/services/testing-logger.service.js:7:38) at Object.<anonymous> (../node_modules/@nestjs/testing/testing-module.builder.js:9:34)
Моя конфигурация tsconfig:
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2017",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true
},
"exclude": [
"node_modules",
"./node_modules",
"./node_modules/*",
"./node_modules/@types/node/index.d.ts",
]
}
команда испытания пряжи:
"test": "jest"
Содержимое файла модульного теста:
import { Test, TestingModule } from '@nestjs/testing';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import {ConfigModule} from './config/config.module';
describe('AppController', () => {
let appController: AppController;
beforeEach(async () => {
const app: TestingModule = await Test.createTestingModule({
imports: [ConfigModule],
controllers: [AppController],
providers: [AppService],
}).compile();
appController = app.get<AppController>(AppController);
});
describe('root', () => {
it('should return "pong"', () => {
expect(appController.getHello()).toBe('pong');
});
});
});
Комментарии:
1. Какие у вас
@nestjs/
версии пакетов? Можете ли вы добавить их к своему вопросу?2. Спасибо вам за ваш ответ! Вот они: «@nestjs/общие»: «6.7.2», «@nestjs/ядро»: «6.7.2», «@nestjs/jwt»: «6.1.1», «@nestjs/мангуст»: «6.1.2», «@nestjs/паспорт»: «6.1.0», «@nestjs/платформа-экспресс»: «6.7.2», «@nestjs/тип»: «6.2.0», «шутка»: «24.9.0» Версия NodeJS: v14.17.4
3. Кроме того, утилиты, которые я использовал для поиска циклических зависимостей (сначала я подумал, что это вызывает проблему), говорят, что в проекте нет циклических зависимостей.
4. О, ничего себе, снова на Nest v6. А как насчет ваших разработчиков
@nestjs/
, а также5. «@nestjs/cli»: «6.9.0», «@nestjs/схемы»: «6.7.0», «@nestjs/тестирование»: «^8.0.6» Я действительно ценю ваши отзывы, но я полагаю, что этот вопрос для меня больше не актуален. Поскольку у нас не было времени на поиск решения, мы решили просто написать тесты API с postman. Мы все еще можем обойти это, чтобы это помогло другим, кто сталкивается с подобной проблемой.
Ответ №1:
У вас есть @nestjs/testing
версия 8, но вы используете @nestjs/common
, @nestjs/core
, и многие другие @nestjs/
пакеты ниже версии 6. Эти основные версии должны соответствовать друг другу. Либо обновите все до версии 8, либо понизьте @nestjs/testing
до версии 6, чтобы соответствовать общим и основным пакетам.