我正在使用 NestJS、Jest 和 Supertest。我创建了一个规范文件来测试我的 Controller 。
规范文件:
import * as request from 'supertest';
import { Test, TestingModule } from '@nestjs/testing';
import { INestApplication } from '@nestjs/common';
import { IzvodiNalogModule } from './izvodi_nalog.module';
import { AppModule } from 'src/app.module';
describe('izvodi_nalog', () => {
let app: INestApplication;
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule, IzvodiNalogModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
it(`/GET find modal fields`, async () => {
const response = await request(app.getHttpServer())
.get('/izvodi/modal-data')
.set('Accept', 'application/json')
.expect('Content-Type', /json/)
.expect(200);
expect(response.body).toBeDefined();
});
afterAll(async () => {
await app.close();
});
});
我运行yarn jest -- name-of-file.spec.ts 并得到:
➜ izvodi-api git:(krd-620-unos-novog-izvoda) ✗ yarn jest -- izvodi_nalog.controller.spec.ts
FAIL src/tenants/partner/modules/izvodi_nalog/izvodi_nalog.controller.spec.ts (7.596 s)
● izvodi_nalog › /GET find modal fields
TypeError: this.graphInspector.insertEnhancerMetadataCache is not a function
at DependenciesScanner.insertInjectable (../../../node_modules/@nestjs/core/scanner.js:259:33)
at ../../../node_modules/@nestjs/core/scanner.js:147:66
at Array.forEach (<anonymous>)
at ../../../node_modules/@nestjs/core/scanner.js:147:39
at Array.forEach (<anonymous>)
at DependenciesScanner.reflectInjectables (../../../node_modules/@nestjs/core/scanner.js:146:27)
at DependenciesScanner.reflectDynamicMetadata (../../../node_modules/@nestjs/core/scanner.js:124:14)
at ../../../node_modules/@nestjs/core/scanner.js:114:18
at Array.forEach (<anonymous>)
at DependenciesScanner.reflectControllers (../../../node_modules/@nestjs/core/scanner.js:112:21)
● Test suite failed to run
TypeError: Cannot read properties of undefined (reading 'close')
28 |
29 | afterAll(async () => {
> 30 | await app.close();
| ^
31 | });
32 | });
33 |
at tenants/partner/modules/izvodi_nalog/izvodi_nalog.controller.spec.ts:30:15
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 total
Snapshots: 0 total
Time: 7.656 s
Ran all test suites matching /izvodi_nalog.controller.spec.ts/i.
进一步的背景: 我正在开发我公司制作的 monorepo,所以我怀疑 package.json 中是否有任何错误。我还尝试在 monorepo 内的不同包中运行所有测试,其代码位于 main 上,因此应该是防弹的并经过测试,但仍然得到相同的错误并且所有测试都失败,所以我怀疑它是因为代码。
如果这里有人知道发生了什么,请告诉我。我打算向我的导师询问这个问题,但首先我想至少对这个问题有一些了解,这样我就不会显得像个白痴。
最佳答案
确保@nestjs/testing
的版本与@nestjs/core
的版本匹配。如果您通过 nest update --force
命令更新 NestJS,它只会更新 @nestjs/core
,这会破坏测试。
关于typescript - TypeError : this. graphInspector.insertEnhancerMetadataCache 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76083973/