9

我正在为使用 Fluxxor 提供事件调度程序的 React 应用程序编写测试。要做到这一点,需要告诉 Jest 不要模拟一些内部使用的模块,这些模块是由 Node 本身提供的。

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

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

但是,我找不到任何有用的地方。我有一个setupEnvScriptFile设置了一些全局变量,我几乎在所有测试中都使用了这些全局变量,但是该jest对象似乎在该上下文中不可用,所以我不能只在那里设置模拟。

作为一种临时的权宜之计,我将上面的代码包装在一个函数中,我在describe测试 Fluxxor 存储的任何块的开头调用该函数,但它远非理想。

4

3 回答 3

2

你试过config.setupTestFrameworkScriptFile吗?根据文档,这似乎是修补 api 的正确位置。

于 2015-01-09T12:31:25.680 回答
0

似乎至少目前的答案是“在这种情况下你不能”,但是对于需要进行的两项更改来支持它存在一些问题。

https://github.com/facebook/jest/issues/106 https://github.com/facebook/jest/issues/107

于 2014-08-08T17:04:39.467 回答
0

FWIW,这是我们一直用来在我们的测试规范中添加 Fluxxor 和 React-Router 支持的解决方案。

https://gist.github.com/adjavaherian/a15ef0461e65d58aacd2

于 2015-03-02T19:30:48.213 回答