2015-10-05 65 views
1

我正在进行一个相当大的项目,我们曾使用Jest进行单元测试。我们决定迁移到Karma + Jasmine,因为Jest虽然有一些优点,但对于我们的需求来说太慢了,有时会导致我们的持续集成服务器崩溃,对资源的要求比对等服务器要求更高。重新加载Karma,Jasmine和karma-browserify所需的模块

Jest的一大优势就是它为每个测试重新创建了一个独立的环境。有可能需要beforeEach挂钩中的模块,然后模块的代码再次运行。另一个优点是所有模块的自动模拟。通过KarmaJasmine,您有时需要追踪副作用,以尽量减少不良行为。

至于KarmaJasmine,它的速度比较快,文件观看功能使我们能够进行高效的TDD,而其他开发团队也很开心,我们不再让我们的CI服务器崩溃。

回到我的问题......

我想知道是否有可能以“清require缓存”每个测试运行之前。我知道browserify是如何工作的,以及require是如何完成的,但我很高兴知道你们中的一些人成功解决了这个问题。它的实际工作方式,一个新的测试可能会破坏一个较旧的测试,因为它会修改环境,这非常糟糕。

我试图rewireify,但似乎不与watchify发挥出色(其由karma-browserify使用)和修改的模块没有正确重新加载,因为所有rewireify'ed模块在存储器中的不同的参考,以及防止我们使用autoWatch和适当的TDD。

+0

在这菲利克斯上发现了什么? –

+0

没有什么令人满意的......我只是实现了一个init函数来手动重新启动我的模块。 –

回答

0

看来这是一个webstorm bug here you can see it

那里我找到了一个解决方案,为我工作。

  1. 修改这个文件(在OSX):

/Applications/WebStorm.app/Contents/plugins/js-karma/js_reporter/karma-intellij/lib/intellijRunner.js

  • 修改刷新属性为true这样的:
  • runWithConfig({ port: serverPort, refresh: true, //<-- This urlRoot: urlRoot });

    相关问题