在每次运行Jest测试之前,我该如何运行一些配置?

9

我正在为React应用编写测试,其中使用了Fluxxor提供事件分发器。这需要告诉Jest不要模拟一些内部使用的模块,这些模块由Node自身提供。

这意味着我不能只将它们添加到unmockedModulePathPatterns配置键中,而是必须使用像这样的代码:

[ 'util', 'events' ].forEach(function (module) {
  jest.setMock(module, require.requireActual(module));
});

然而,我找不到任何有用的地方放置它。我有一个名为setupEnvScriptFile的文件,它设置了一些全局变量,我几乎在所有测试中都要使用它们,但是jest对象在这种情况下似乎不可用,因此我不能在那里设置模拟对象。
作为一个临时的折中措施,我将上述代码包装在一个函数中,在测试Fluxxor存储的任何describe块的开头调用它,但这远非理想。

为什么你不能使用 unmockedModulePathPatterns - Felix Kling
我真的不知道为什么它对我不起作用,但是我尝试将核心Node模块添加到“unmockedModulePathPatterns”中时,使用以下模式都没有效果:util /usr/lib/node/util /usr/lib/node在每种情况下,“util”模块仍然被模拟。 - Jon Wood
哦,难道 util 本身可能没有被模拟,但它加载其他被模拟的模块吗? - Felix Kling
不,肯定是被模拟的 util 本身,因为当我使用 require.requireActual 时,我得到了预期的 util 对象,如果我不这样做,那么我就会得到一个 Jest 模拟。 - Jon Wood
1
这两个问题分别在 https://github.com/facebook/jest/issues/106 和 https://github.com/facebook/jest/issues/107 中被提出。 - Randy
显示剩余2条评论
3个回答

2

3
文档似乎已经更新 - 我在这里找到了详细信息:http://facebook.github.io/jest/docs/en/configuration.html#setuptestframeworkscriptfile-string - Jono Job

0

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接