pga*_*mou 6 javascript unit-testing reactjs jestjs
总之,我想知道:
例如,在以下文件系统中:
rootFolder/
node_modules/
externalModule/
- index.js
__mocks__/
- externalModule.js
src/
- fileA.js
- fileB.js
- internalModule.js
__mocks__/
internalModule.js
__tests__/
- fileA.spec.js
- fileB.spec.js
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
jest.mock('../internalModule, () => customImplementation)在fileA.spec.js影响fileB.spec.js,反之亦然?jest.mock('externalModule', () => customImplementation)在fileA.spec.js中是否会影响fileB.spec.js,反之亦然?。做`jest.mock('模拟外部模块(node_modules)jest.mock('externalModule')地进行初始化jest.mock('externalModule', () => customImplementation)优先于全局模拟吗?它会覆盖跨文件的全局模拟吗?jest.spyOn(internalModule, 'someFunc').mockImplementationOnce(..)在单元的整个生命周期内模拟实现还是只调用一次就someFunc()可以重置功能?jest.doMock,与jest.mock,不会提升模拟“向上”。但是,上哪儿呢?文件?它会在单元结束时自动解除模拟或重置吗?还是会影响未来的单位?jest.unmock('externalModule')全球嘲笑,重置为每个文件?我见过非常不一致的行为,并且没有明确解释这一点的文档。此外,我发现文档要么到处都是,要么不够具体。
提前致谢。
PS 我发现了其他具有类似标题的问题,例如如何将 Jest 模拟函数的范围限制为单个测试和模拟函数时 Jest 中的范围,但它们没有回答我的问题。
除非开发人员明确包含,否则规范文件与其他规范隔离运行。
这里的例外是,可以设置全局变量来运行。
有效地将规范中的每个测试视为其自己的应用程序。
他们不应该互相影响。但是,如果您导入一个文件,该文件会导入另一个文件(依此类推),所有这些文件都将参与测试并可能影响结果(取决于这些文件的作用/行为,但这就是我们进行测试的原因 - 找出答案)。