【问题标题】:Karma not picking the changes, have to run tests twiceKarma 没有选择更改,必须运行两次测试
【发布时间】:2014-04-29 10:05:33
【问题描述】:

我正在 IntelliJ IDEA(最新,13.1.2)的 Karma(最新,0.12.14)上运行 Jasmine 测试OS X。

IntelliJ 只使用指向我的 karma 安装的 Karma 插件:/usr/local/lib/node_modules/karma

问题在于 Karma watcher 不会从 JS 文件中选择新的更改。当我再次运行测试时,一切都很好。这不是一个大问题(它们运行得非常快),但是在您进行更改后总是运行两次测试是很烦人的。

有人遇到过类似的问题吗?

【问题讨论】:

  • 你解决过这个问题吗?我遇到了同样的问题。
  • 我也有同样的问题。我可以验证测试是否在文件的“更改前”版本上执行。即:如果我打开了自动监视开关,并添加了一个console.log,测试会自动运行(因为它检测到我做了更改),但没有console.log。如果我随后手动重新运行测试,我会看到 console.log

标签: intellij-idea jasmine karma-runner


【解决方案1】:

将以下属性添加到您的 karma.conf.js 文件中:

usePolling: true

我把它放在 autoWatch 标志之后。

参考:AutoWatch doesn't work #895

【讨论】:

  • 在我的情况下不起作用。我认为问题可能不在 Karma 中,而在 IntelliJ 中
  • 这在 Webstorm 2016.2.3 上对我有用,它运行了我的整个测试套件两次。
【解决方案2】:

终于搞定了。这是a known issue,当在 IntelliJ 中使用 Karma 和 Webpack / Gulp / 等构建工具时......并且后处理的文件不在 Karma 直接提供的文件之外。

解决方法是手动修改此文件中的 IntelliJ 配置:...\plugins\js-karma\js_reporter\karma-intellij\lib\intellijRunner.js

runWithConfig() 方法中的#75 处或附近,更改refresh 属性 --> true

this comment for details

在 IntelliJ 和 Webstorm 中都有这个问题,并以相同的方式修复。

【讨论】:

  • 确实在 WebStorm 2016.3 上为我解决了问题(/w autoWatch=false noPolling 和“安全写入”。
【解决方案3】:

在使用 IntelliJ IDEA 的情况下,不妨试试
首选项>常规>取消选中“安全写入”

【讨论】:

  • 这在 IntelliJ 2019.1.1 中有效,但该选项已移至首选项 > 外观和行为 > 系统设置 > 使用安全写入
【解决方案4】:

我不确定问题是否仍然存在,但我找到了解决方案(或只是一种解决方法)。

我在这里稍微更改了C:\Users\MyUser\.IntelliJIdea14\config\plugins\js-karma\js_reporter\karma-intellij\lib\intellij.conf.js这个文件:

config.singleRun = false;
var originalAutoWatch = config.autoWatch;
//config.autoWatch = false; <-- this line
config.autoWatchBatchDelay = 0;

当然,插件维护者有一些理由添加这一行,但对我来说,这已经足够好了(我无法重现孤立的崩溃)。

【讨论】:

  • 效果很好!我还建议注释下一行(autoWatchBatchDelay),以便保留默认值 250 毫秒。这使得 karma 在再次运行测试之前等待 250 毫秒以等待其他文件更改。
  • 这对我不起作用。对文件(src 文件或规范文件)进行更改后,将触发自动监视,并重新运行测试 - 但未获取更改(即:如果我修复了测试,它仍然显示测试失败的)。但是,当我再次手动重新运行测试时,它说测试通过了。
【解决方案5】:

我不确定旧版本的 intelij,但我使用的是 2016.3(撰写本文时的最新版本),假设 karma 配置有 autoWatch: true,一切正常。 遇到完全相同的问题,我所要做的就是在 intelij 中打开 Toggle auto-test 并开始正常工作,无需任何其他更改。

【讨论】:

    【解决方案6】:

    请检查 karma 配置文件中设置为 TRUE 的 autoWatch 属性。

    【讨论】:

    • 一直设置为true。它实际上将观察者语句打印到控制台。
    【解决方案7】:

    此外,如果您使用的是 Sublime Text 3,请在您的用户设置中设置 "atomic_save": false,因为它也会导致手表出现问题。见here

    【讨论】:

      【解决方案8】:

      为我工作。在尝试了usePolling: truemodifying the intellijRunner.jsunchecking Safe Write 之后,我仍然需要保存或运行两次测试才能捕捉到变化。

      制作了一个复合宏来保存并运行文件以及保存并重新运行测试。然后我通过 Keymap 覆盖了每个命令的快捷方式。

      How to bind multiple actions to a shortcut

      screenshot of macro: Save and Run test at cursor

      screenshot of macro: Save and Re-run last test

      screenshot of Keymap for macros

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-24
        • 2019-06-17
        • 2014-12-20
        • 2020-01-01
        • 2017-12-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多