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.tsTest 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 中失败的主要内容,如果未能解决你的问题,请参考以下文章

Angular 2 业力设置问题——业力启动但不运行测试

CI 正在运行样本纱线测试

如何使用 isparta 从业力的代码覆盖范围中排除第三方导入(如 jquery)?

清理纱线测试缓存

JHipster:测试微服务时收到 401 Unauthorized

解释业力单元测试时间