jHipster:业力测试通过“纱线测试”通过,但在 WebStorm 中失败
Posted
技术标签:
【中文标题】jHipster:业力测试通过“纱线测试”通过,但在 WebStorm 中失败【英文标题】:jHipster: Karma tests pass with 'yarn test' but fail in WebStorm 【发布时间】:2018-02-24 19:08:47 【问题描述】:我使用带有 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 测试?
编辑:发现yarn test
实际上运行命令yarn run lint && karma start src/test/javascript/karma.conf.js
编辑 2:我现在在 WebStorm 的 Karma Server 选项卡中发现,它报告 webpack 在测试运行之前无法编译,并报告了大量各种错误。我在这里包含了一个 sn-p:
[at-loader] 中的错误 ./spec/helpers/mock-principal.service.ts:14:59 TS2693:“Promise”仅指一种类型,但在此处用作值。
[at-loader] ./spec/test.module.ts:24:14 中的错误 TS1219:对装饰器的实验性支持是一项可能在未来版本中更改的功能。设置 'experimentalDecorators' 选项可移除此警告。
webpack:编译失败。
完整的错误报告在这里(直到截断)https://gist.github.com/TLDC/af7d319d1c2a87bc1cfb9233e725bd3a
【问题讨论】:
有代表问题的github项目吗?如果没有可重现的问题示例,则无法回答您的问题。没有 plunkr 或其他任何东西,只有 一个完全配置的 github 项目 我正在尝试制作一个现在有问题的小项目。我不能分享实际代码,因为它是机密的。我很难让它在一个小例子中不起作用,但这很奇怪。我们在 jHipster 自动生成的代码中使用的代码,所以我会将该标签添加到我的问题中 好的,我生成了一个空的 jhipster 项目并为它创建了一个 github:github.com/TLDC/jhi-karma-issue-test 你可以尝试在 src/test/javascript 下运行任何 Karma 测试,它们应该在 WebStorm 中失败,并出现与我相同的错误 对我来说完全没问题。网络风暴 2017.2.3 。你有哪个版本?我做了什么:右键单击.spec文件,弹出run blabla.spec.ts
,Test run
工具,所有测试都通过,然后我可以从列表中选择一个文件再次运行
终于解决了,感谢@smnbbrv的帮助。既然我不能给你赏金,我会尝试用其他方式回报你。 :)
【参考方案1】:
如果MyTestModule
没有导出HttpModule
(希望它没有'),那么测试配置不够。
只需将HttpModule
添加到imports
,它应该可以在任何环境中工作:
TestBed.configureTestingModule(
imports: [MyTestModule, HttpModule],
declarations: [AlertTableComponent],
providers: [AlertService]
)
【讨论】:
感谢您的回复,但我并不想寻找代码更改解决方案,因为我知道测试有效。它们只是不能在 IDE 中工作。也试过了,他们仍然不能在 IDE 中工作。 是的,它们有效。但是你知道,这是不正确的测试台配置 您的修复也不起作用。我已经对原始问题进行了很多编辑以进一步澄清问题。 你的 repo 工作得很好,如果有的话,你能分享你的业力工作配置和错误吗? 抱歉回复慢我附上了我的 Karma 配置图片和一个更详细的错误【参考方案2】:我终于设法解决了这个问题。
首先,感谢@smnbbrv,这个问题似乎只发生在 Windows 上。 这是有道理的,因为它似乎是某处路径的问题。
我发现的问题是,在运行 Karma 测试之前,webpack 试图编译引用 tsconfig.json 文件的 TypeScript 文件:
project-root/src/test/javascript/tsconfig.json
但是,此位置中不存在此文件,并且没有将其报告为问题,而是在 Karma 服务器控制台上报告了大量 TypeScript 编译错误。这会导致测试失败。
我可以通过简单地从其实际位置复制 tsconfig.json 文件来解决此问题
项目根目录/tsconfig.json
到 webpack 在 Karma 测试运行器中所期望的那个。然后,这会导致所有测试按预期通过 WebStorm。
理想情况下,最好找到一些配置来更改某处以告诉 webpack 在哪里查找此文件,但我终生无法找到在哪里执行此操作。但这种解决方法目前确实对我有用。
【讨论】:
以上是关于jHipster:业力测试通过“纱线测试”通过,但在 WebStorm 中失败的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 isparta 从业力的代码覆盖范围中排除第三方导入(如 jquery)?