typescript - TypeError : this. graphInspector.insertEnhancerMetadataCache 不是一个函数

标签 typescript jestjs nest supertest

我正在使用 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/

相关文章:

angular - Ionic 使用 IdentityServer4 作为 IDP

c# - 等待ElasticSearch启动并运行

elasticsearch - _id在Elasticsearch中未自动生成

javascript - npm 测试没问题,但它也会引发 Uncaught Error AskBackend ReferenceError : localStorage is not defined

c# - 你如何调试你的 Nest 查询?

javascript - 如何使用 react 和 typescript 将变量字符串插入链接标记?

json - typescript 用类和接口(interface)解析json

Typescript 声明具有属性的函数

angular - 如何用 Jest 模拟组件中使用的 "nested" Angular 服务

node.js - 如何使用 node-fetch、supertest 和 typescript 设置 fetch-mock