在 CLI 中运行时,Jest 测试不起作用

Posted

技术标签:

【中文标题】在 CLI 中运行时,Jest 测试不起作用【英文标题】:Jest tests are not working when run in CLI 【发布时间】:2019-12-27 10:21:09 【问题描述】:

我在测试 Nestjs 时遇到了奇怪的问题。

当我运行npm run test 时,大多数测试都失败了。一些变量变得未定义,嵌套无法解决依赖关系等。 但是当我从 WebStorm 面板运行 ALL TESTS 时,一切正常。

https://gist.github.com/hejkerooo/5a56ee2a7d78ce41cb390d1ece648933

  Nest can't resolve dependencies of the TrendService (?). Please make sure that the argument at index [0] is available in the _RootTestModule context.

      at Injector.lookupComponentInExports (node_modules/@nestjs/core/injector/injector.js:180:19)

Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at mapper (node_modules/jest-jasmine2/build/queueRunner.js:25:45)

 TypeError: Cannot read property 'clear' of undefined

      17 |   beforeEach(async () => 
      18 |     jest.restoreAllMocks();
    > 19 |     await trendsRepository.clear();
         |                             ^
      20 |   );
      21 | 
      22 |   afterAll(async () => 


ReferenceError: You are trying to `import` a file after the Jest environment has been torn down.

(node:2633) UnhandledPromiseRejectionWarning: TypeError: Caught error after test environment was torn down

【问题讨论】:

您能否提供更多有关您的错误的背景信息?就像您定义测试文件的方式一样,TrendService 在哪里被导入和使用,以及您如何在测试文件中模拟它。最好提供一个有问题的存储库,以便我们可以重现并更好地帮助您 【参考方案1】:

问题已解决 - 刚刚使用 jest.setTimeout50000,工作正常。 我认为这是一个临时修复,但会深入研究它。

【讨论】:

以上是关于在 CLI 中运行时,Jest 测试不起作用的主要内容,如果未能解决你的问题,请参考以下文章

为啥在火花中运行时配置单元查询不起作用

从 Eclipse 中运行时,JSTL 不起作用

在 github 操作中运行时 mv 命令不起作用

在物理设备中运行时,Flutter 中的热重载不起作用

tslint CLI 和 jest CLI 在 iterm zsh macOS 上不起作用

当图像在 docker 机器中运行时,X11 转发不起作用,但如果图像在没有 docker 机器的情况下运行,则它可以正常工作