jestjs - 当我尝试使用 NestJS、Jest 和 GraphQLFederationModule 进行测试时出错

标签 jestjs apollo nestjs ts-jest protobufjs

当我尝试使用此模块进行测试时,出现以下错误:

 FAIL  test/test.e2e-spec.ts (28.561s)
  AppController (e2e)
    × test (4555ms)

  ● AppController (e2e) › test

    Configuration error:

    Could not locate module ./src/index-minimal mapped as:
    C:\absolute\path\server\company\src\$1.

    Please check your configuration for these entries:
    {
      "moduleNameMapper": {
        "/src\/(.*)/": "C:\absolute\path\server\company\src\$1"
      },
      "resolver": undefined
    }

      at createNoMappedModuleFoundError (../node_modules/jest-resolve/build/index.js:545:17)
      at Object.<anonymous> (../node_modules/@apollo/protobufjs/minimal.js:4:18)

Jest 配置文件是:

{
  "moduleFileExtensions": ["js", "json", "ts"],
  "rootDir": ".",
  "testRegex": ".e2e-spec.ts$",
  "transform": {
    "^.+\\.(t|j)s$": "ts-jest"
  },
  "testEnvironment": "node",
  "moduleDirectories": ["node_modules", "src"],
  "moduleNameMapper": {
    "src/(.*)": "<rootDir>/../src/$1"
  }
}

app.module 文件:

@Module({
  imports: [
    ...,
    GraphQLFederationModule.forRootAsync({
      imports: [CustomConfigModule],
      inject: [EnvironmentStateService],
      useFactory: (environmentStateService: EnvironmentStateService) => ({
        introspection: environmentStateService.isDev,
        debug: environmentStateService.isDev,
        playground: environmentStateService.isDev,
        autoSchemaFile: true,
        tracing: environmentStateService.isDev,
      }),
    }),
    ...,
  ],
})
export class AppModule {}

当我在 app.module 中尝试以下设置时,它可以正常工作:

@Module({
  imports: [
    ...,
    GraphQLModule.forRootAsync({
      imports: [CustomConfigModule],
      inject: [EnvironmentStateService],
      useFactory: (environmentStateService: EnvironmentStateService) => ({
        introspection: environmentStateService.isDev,
        debug: environmentStateService.isDev,
        playground: environmentStateService.isDev,
        autoSchemaFile: true,
        tracing: environmentStateService.isDev,
      }),
    }),
    ...,
  ],
})
export class AppModule {}

我一直在检查它给我带来错误的文件,我在node_modules(minimal.js)中找到了以下protobufjs代码:

// minimal library entry point.

"use strict";
module.exports = require("./src/index-minimal");

有人知道会发生什么吗?谢谢!

最佳答案

我已经将路径的形式更改为:“src/folder/...”到“@App/folder/...”,最终它工作正常,但我很好奇为什么会发生这种情况并且如果有任何解决方案,我会关注可能的解决方案和建议,非常感谢!

如果有人想查看解决方案,如下:

tsconfig.json:

{
  "compilerOptions": {
    ...
    "baseUrl": "./",
    "paths": {
      "@App/*": ["src/*"]
    },
    ...
  },
  ...
}

Jest 配置文件:

{
  "moduleFileExtensions": ["js", "json", "ts"],
  "rootDir": ".",
  "testRegex": ".e2e-spec.ts$",
  "transform": {
    "^.+\\.(t|j)s$": "ts-jest"
  },
  "testEnvironment": "node",
  "moduleNameMapper": {
    "^@App/(.*)$": "<rootDir>/../src/$1"
  }
}

问候!

关于jestjs - 当我尝试使用 NestJS、Jest 和 GraphQLFederationModule 进行测试时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61356672/

相关文章:

javascript - 类型错误 : scrollIntoView is not a function

javascript - 如何从 React/Jest 中的自定义钩子(Hook)模拟返回数据?

postgresql - 使用 NestJS 和 TypeOrm,在我运行 NestJS 应用程序后不会自动创建表

typescript - 如何在 NestJS CLI 中指定将 Controller 添加到哪个模块?

node.js - 找不到模块 '@nestjs/typeorm'

unit-testing - Jest 无法转换 node_modules

javascript - 传递给组件的 ReactJS/Jest : How to test/mock a function,

找到 GraphQLError : Syntax Error: Expected :, {

typescript - Apollo 客户端 :codegen typescript with @client query fields

graphql - Apollo 客户端变异错误处理