我使用 Mongdoose 和 Nestjs 创建了一个简单的 REST API。我总共进行了 2 次测试,但都失败了。\n测试输出:
\n\n\n\n\nFAIL src/app/auth/auth.service.spec.ts\n \xe2\x97\x8f 测试套件运行失败
\n
Cannot find module \'@shared/errors\' from \'auth.service.ts\'\n\n 5 | \n 6 | import { AppLogger } from \'../logger/logger\';\n> 7 | import { Errors } from \'@shared/errors\';\n | ^\n 8 | import { ILoginDto } from \'./dto/login.dto\';\n 9 | import { ITokenDto } from \'./dto/auth.dto\';\n 10 | import { IUser } from \'@user/document/user.doc\';\n\n at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)\n at Object.<anonymous> (auth/auth.service.ts:7:1)\nRun Code Online (Sandbox Code Playgroud)\n\nFAIL src/app/user/user.service.spec.ts\n \xe2\x97\x8f 测试套件运行失败
\n\nCannot find module \'@shared/errors\' from \'user.service.ts\'\n\n 1 | import { BadRequestException, Injectable } from \'@nestjs/common\';\n 2 | import { InjectModel } from \'@nestjs/mongoose\';\n> 3 | import { Errors } from \'@shared/errors\';\n | ^\n 4 | import { createMultipleRandom } from \'@shared/utils\';\n 5 | import { Model } from \'mongoose\';\n 6 | import { AppLogger } from \'../logger/logger\';\n\n at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)\n at Object.<anonymous> (user/user.service.ts:3:1)\nRun Code Online (Sandbox Code Playgroud)\n\n测试套件:2 个失败,总共 2 个\n测试:总共 0 个\n快照:总共 0 个\n时间:2.751 秒\n运行所有测试套件。
\n\ntsconfig.json:
\n\n{\n "compilerOptions": {\n "module": "commonjs",\n "declaration": true,\n "removeComments": true,\n "emitDecoratorMetadata": true,\n "experimentalDecorators": true,\n "target": "es2017",\n "sourceMap": true,\n "outDir": "./dist",\n "baseUrl": "./",\n "incremental": true,\n "paths": {\n "@app/*": ["src/app/*"],\n "@auth/*": ["src/app/auth/*"],\n "@config/*": ["config/*"],\n "@logger/*": ["src/app/logger/*"],\n "@shared/*": ["src/app/shared/*"],\n "@user/*": ["src/app/user/*"],\n }\n },\n "include": [\n "src/**/*"\n ],\n\n "exclude": ["node_modules", "dist"]\n}\nRun Code Online (Sandbox Code Playgroud)\n\nauth.service.spec.ts:
\n\nCannot find module \'@shared/errors\' from \'auth.service.ts\'\n\n 5 | \n 6 | import { AppLogger } from \'../logger/logger\';\n> 7 | import { Errors } from \'@shared/errors\';\n | ^\n 8 | import { ILoginDto } from \'./dto/login.dto\';\n 9 | import { ITokenDto } from \'./dto/auth.dto\';\n 10 | import { IUser } from \'@user/document/user.doc\';\n\n at Resolver.resolveModule (../../node_modules/jest-resolve/build/index.js:259:17)\n at Object.<anonymous> (auth/auth.service.ts:7:1)\nRun Code Online (Sandbox Code Playgroud)\n\n在 @shared/errors.ts 中,我只导出一个常量变量。由于它不是一个模块,我应该如何在测试中导入它?我怎么解决这个问题 ?
\nano*_*932 10
如果您来自 google,那么如果 VSCode 自动完成您的导入而src/xyz/abc/service.ts不是../xyz/abc/service.ts.
运行测试时,测试代码将无法在运行时找到正确的服务。'src/'它需要完全相对路径,开头没有绝对路径。
当您使用打字稿的路径映射时,您还需要使用映射的路径更新您的笑话配置。您的笑话配置需要添加以下内容:
{
...
"moduleNameMapper": {
"^@Shared/(.)*$": "<rootDir>/src/app/shared/$1"
}
}
Run Code Online (Sandbox Code Playgroud)
假设您的<rootDir>设置为 is.且 not ./src。您可以在这里找到更多信息。
| 归档时间: |
|
| 查看次数: |
12947 次 |
| 最近记录: |