所有测试文件中的Jest Mock用户模块

时间:2018-04-06 04:22:14

标签: javascript reactjs unit-testing jestjs

  

有没有办法让它开玩笑总是嘲笑我的模块所以我不需要把它包含在我所有的开玩笑测试中?

目前我有一个配置文件

// src/__mocks__/config.js 
export default {
  dbConfig: 'TestDBConfiguration'
};

// src/config.js
export default {
  dbConfig: ... // Some other stuff
};

要运行我的单元测试,我必须使用模拟的 config.js 。 目前在我的所有单元测试中,我必须包含 jest.mock(' ../ config');

// org.test.js
jest.mock('../../config');
import db from '../db';              // This internally uses the config file
import otherFile from '../otherFile'; // This also uses the config file

// Code that calls both db/otherFile

有时候,当我创建测试时,我可能会忘记包含 jest.mock(' ../ config'),这是我希望将其包含在所有内容中的原因之一我的测试。

我已经考虑过启用automock,但它似乎打破了我的测试。 https://facebook.github.io/jest/docs/en/configuration.html#automock-boolean

2 个答案:

答案 0 :(得分:6)

您可以将setupTestFrameworkScriptFile添加到您的jest配置中,以便在所有测试之前运行。

https://facebook.github.io/jest/docs/en/configuration.html#setuptestframeworkscriptfile-string

// package.json
...
"jest": {
  "setupTestFrameworkScriptFile": "./src/setupTests.js"
}
// setupTests.js
jest.mock('config'); // Path to config file

答案 1 :(得分:0)

Jest文档已更新,并使用setupFilesAfterEnv运行可以利用Jest函数(如jest.mock())的代码。

更新@smirky的示例以使用setupFilesAfterEnv

// package.json
...
"jest": {
  "setupFilesAfterEnv": ["./src/setupTests.js"]
}
// setupTests.js
jest.mock('config'); // Path to config file

在旁注中,如果您希望为每次运行的测试使用import/require个模块,则可以使用setupFiles