Unit testing 在Jest中模拟模块时,如何断言调用默认导出函数?

Unit testing 在Jest中模拟模块时,如何断言调用默认导出函数?,unit-testing,jestjs,Unit Testing,Jestjs,我试图在Jest测试中模拟外部依赖。 我的目标是验证是否使用某些指定参数调用了依赖项 依赖项导出一个默认函数,这使得使用jest.SpyOn非常困难(不可能?) 我已尝试使用jest.mock如下: constcallback=jest.fn(()=>output'); mock('dependecy',()=>回调); 它('使用一些参数调用dep'()=>{ ... expect(callback).toBeCalledWith('arg1','arg2') }); 还尝试了jest.mo

我试图在Jest测试中模拟外部依赖。 我的目标是验证是否使用某些指定参数调用了依赖项

依赖项导出一个默认函数,这使得使用
jest.SpyOn
非常困难(不可能?)

我已尝试使用
jest.mock
如下:

constcallback=jest.fn(()=>output');
mock('dependecy',()=>回调);
它('使用一些参数调用dep'()=>{
...
expect(callback).toBeCalledWith('arg1','arg2')
});
还尝试了
jest.mock('dependecy',()=>({default:callback}))。
但无论哪种方法都不成功,我认为这是因为提升了
jest.mock
。因此,我尝试了
jest.doMock
,但这似乎并没有调用/创建我的mock


关于如何验证是否在jest中导出默认函数的外部依赖项上调用了方法,您有什么想法吗?

下面是一个简单的工作示例,可以帮助您继续:

code.js

从“依赖项”导入依赖项;
export const func=()=>“返回”+依赖项();
code.test.js

从“/code”导入{func};
从“依赖项”导入依赖项;//
笑话fn(()=>‘嘲弄’)//{
它('应该调用依赖关系',()=>{
const result=func();
expect(result).toBe('returned mocked');//成功!
expect(dependency).tohavebeencall();//成功!
});
});

请注意,模块工厂功能必须是自包含的,因此可以通过
babel jest

提升。谢谢,这就是解决方案!我不知道在导入的模块上调用
expect
仍然会引用模拟实例。