我正在进行一个相当大的项目,我们曾使用Jest进行单元测试。我们决定迁移到Karma + Jasmine,因为Jest虽然有一些优点,但对于我们的需求来说太慢了,有时会导致我们的持续集成服务器崩溃,对资源的要求比对等服务器要求更高。重新加载Karma,Jasmine和karma-browserify所需的模块
Jest的一大优势就是它为每个测试重新创建了一个独立的环境。有可能需要beforeEach
挂钩中的模块,然后模块的代码再次运行。另一个优点是所有模块的自动模拟。通过Karma和Jasmine,您有时需要追踪副作用,以尽量减少不良行为。
至于Karma和Jasmine,它的速度比较快,文件观看功能使我们能够进行高效的TDD,而其他开发团队也很开心,我们不再让我们的CI服务器崩溃。
回到我的问题......
我想知道是否有可能以“清require
缓存”每个测试运行之前。我知道browserify是如何工作的,以及require
是如何完成的,但我很高兴知道你们中的一些人成功解决了这个问题。它的实际工作方式,一个新的测试可能会破坏一个较旧的测试,因为它会修改环境,这非常糟糕。
我试图rewireify,但似乎不与watchify发挥出色(其由karma-browserify使用)和修改的模块没有正确重新加载,因为所有rewireify'ed模块在存储器中的不同的参考,以及防止我们使用autoWatch
和适当的TDD。
在这菲利克斯上发现了什么? –
没有什么令人满意的......我只是实现了一个init函数来手动重新启动我的模块。 –