jHipster:Karma 测试通过 'yarn test' 但在 WebStorm 中失败

jHipster: Karma tests pass with 'yarn test' but fail in WebStorm

我已经使用带有 Angular 4 前端的 jHipster 建立了一个项目,但我遇到了问题 运行在我的 WebStorm (v2017.2.4) 中进行 Karma 单元测试 IDE.

但是,如果我 运行 在命令行中使用 yarn test 它们全部通过,它们都会通过。这真的让我放慢了速度,因为当我只想 运行 在 IDE.

中快速进行特定测试时,运行 像这样进行所有测试非常耗时

我在 WebStorm 中收到的失败消息是:

Failed: Can't resolve all parameters for XXXService: (?).

(其中 XXX 是失败的众多服务之一的名称)。

我在 github 上设置了一个空的 jHipster 生成项目来演示我遇到此问题的项目:https://github.com/TLDC/jhi-karma-issue-test。 运行 src/test/javascript 下的任何测试都给了我这个问题。

有没有办法配置 WebStorm 使这些测试在 IDE 中通过,而不仅仅是使用纱线测试?

编辑: 发现 yarn test 实际上是 运行 命令 yarn run lint && karma start src/test/javascript/karma.conf.js

编辑 2:我现在在 WebStorm 的 Karma Server 选项卡中发现它报告说 webpack 在测试 运行 之前无法编译,并报告了大量各种错误.我在这里包含了一个片段:

ERROR in [at-loader] ./spec/helpers/mock-principal.service.ts:14:59 TS2693: 'Promise' only refers to a type, but is being used as a value here.

ERROR in [at-loader] ./spec/test.module.ts:24:14 TS1219: Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option to remove this warning.

webpack: 编译失败

完整的错误报告在这里(直到 t运行cation)https://gist.github.com/TLDC/af7d319d1c2a87bc1cfb9233e725bd3a

如果 MyTestModule 没有导出 HttpModule(希望它没有'),那么测试配置不够。 只需将 HttpModule 添加到 imports,它应该可以在任何环境中工作:

TestBed.configureTestingModule({
  imports: [MyTestModule, HttpModule],
  declarations: [AlertTableComponent],
  providers: [AlertService]
})

我终于解决了这个问题。

首先,感谢@smnbbrv,这个问题似乎只发生在 Windows。 这是有道理的,因为它似乎是某处路径的问题。

我发现的问题是,在 Karma 测试之前 运行 webpack 试图编译引用 tsconfig.json 文件的 TypeScript 文件:

project-root/src/test/javascript/tsconfig.json

但是,此位置不存在此文件,它没有将此作为问题报告,而是在 Karma 服务器控制台上报告了大量 TypeScript 编译错误。这会导致测试失败。

我可以通过简单地从

的实际位置复制 tsconfig.json 文件来解决这个问题

project-root/tsconfig.json

到 Karma 测试运行程序中 webpack 所期望的那个。然后,这会导致所有测试按预期通过 WebStorm。

理想情况下,最好找到一些配置来更改某处以告诉 webpack 在哪里寻找这个文件,但我一辈子都找不到在哪里做这个。但是这个解决方法现在肯定对我有用。