使用 Jest 模拟同一模块中的函数
使用 Jest 模拟同一模块中的函数时,重要的是要考虑可能的问题与模块导入。一个常见的问题是导入的函数可能保留对原始未模拟函数的引用,从而导致意外行为。
要有效解决此问题,请考虑以下方法:
隔离模块代码
将模块导入到单独的代码文件中,确保每个导出的实体使用其自身的实例,而不是引用主模块文件中的原始导出。例如:
// module.dev.js import * as thisModule from './module.js'; export function bar() { return 'bar'; } export function foo() { return `I am foo. bar is ${thisModule.bar()}`; // remaining code ...
模拟独立模块
现在,您可以轻松模拟独立模块中的 bar 函数,因为 foo 函数现在使用本地bar 的实例:
import * as module from '../src/module-dev'; describe('module', () => { // ... set up mocks and tests spyOn(module, 'bar').and.returnValue('fake bar'); expect(module.foo()).toEqual('I am foo. bar is fake bar'); });
优点隔离
将模块导入到自己的代码文件中可能看起来不合常规,但它提供了显着的优点:
通过采用此方法,您可以使用 Jest 有效地模拟同一模块中的函数,确保测试套件的可靠性和效率。
以上是如何使用 Jest 有效模拟同一模块内的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!