我使用带有Angular 4前端的jHipster设置了一个项目,而且我在WebStorm(v2017.2.4)IDE中运行Karma单元测试时遇到了问题。
但是,如果我在命令行中使用yarn test
一起运行它们,它们都会通过。这实际上让我失望,因为当我只想在IDE中快速运行特定测试时,运行这样的所有测试非常耗时。
我得到的WebStorm中的失败消息是:
失败:无法解析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服务器”选项卡中发现,在测试运行之前报告了webpack无法编译,并报告了大量各种错误。我在这里收到了一段摘录:
[at-loader]中的错误./spec/helpers/mock-principal.service.ts:14:59 TS2693:'承诺'仅指类型,但在此处用作值。
[at-loader]中的错误./spec/test.module.ts:24:14 TS1219:对装饰器的实验支持是一个在将来的版本中可能会发生变化的功能。设置 ' experimentalDecorators'删除此警告的选项。
webpack:无法编译。
完整错误报告在此处(截至最后截止)https://gist.github.com/TLDC/af7d319d1c2a87bc1cfb9233e725bd3a
答案 0 :(得分:0)
如果HttpModule
没有导出HttpModule
(希望它没有'),那么测试配置不够。
只需将imports
添加到TestBed.configureTestingModule({
imports: [MyTestModule, HttpModule],
declarations: [AlertTableComponent],
providers: [AlertService]
})
,它就可以在任何环境中使用:
String
答案 1 :(得分:0)
我终于设法解决了这个问题。
首先,感谢@smnbbrv,似乎这个问题可能只发生在Windows上。 这有点意义,因为它似乎是某个路径的问题。
我发现问题是在运行Karma测试之前,webpack尝试编译引用tsconfig.json文件的TypeScript文件:
项目根/ SRC /测试/ JavaScript的/ tsconfig.json
但是,此文件中不存在此文件,而是报告此问题,而不是在Karma Server控制台上报告大量TypeScript编译错误。这会导致测试失败。
我能够通过简单地从
的实际位置复制tsconfig.json文件来解决这个问题项目根/ tsconfig.json
到Karma测试运行器中webpack所期望的那个。然后,这会导致所有测试按预期在WebStorm中传递。
理想情况下,找到一些配置来改变某个地方告诉webpack在哪里寻找这个文件会很好,但我不能在我的生活中找到这样做的地方。但是这个解决方法现在肯定对我有用。