我有一个应用程序,试图将集成测试与单元测试区分开。这种差异是通过两种类型的文件后缀.ispec.ts
用于集成而后缀.test.ts
用于单位而造成的。
它们之间的另一个区别是单元测试不应访问网络,因为我已经在axios
上为<rootDir>/__mocks__/axios.ts
设置了一个模拟,以防止该行为成功。但是,对于集成测试,我想通过网络访问,axios
应该保持其正常运行。
为防止在ispec
文件上模拟axios,我在所有文件中添加了以下行:
// anyFile.ispec.ts
imports (...)
jest.unmock('axios'); // this line required in every .ispec file
describe(...)
在阅读笑话文档时,我遇到了以下选项unmockedModulePathPatterns
,顾名思义,该数组上定义的模块将不受笑话cli的影响。
因此,我已将玩笑配置更改为:
// jest.unit.js
module.exports = {
testRegex: '/__tests__/.+\\.test\\.ts$'
};
和
// jest.integration.js
module.exports = {
testRegex: '/__tests__/.+\\.ispec\\.ts$',
unmockedModulePathPatterns: ['axios']
}
令我惊讶的是,从我的jest.unmock('axios')
文件中删除了行ispec
并运行了jest --config ./jest.integration.js
之后,仍然使用了模拟的axios
,这不是我的意图。>
我是否错过了unmockedModulePathPatterns
的要点,或者说这是玩笑配置上的错误?我还尝试将automock
设置为false
,但是行为仍然相同。