我有一个 module.js
包含这样内容的文件
export default {
foo(),
bar()
}
我试过在我的测试文件上这样做
jest.mock('/module/path', () => {
foo: jest.fn().mockReturnValue(true)
})
import Module from './module/path'
这是我正在尝试做的测试
test('test the module', () => {
let fooSpy= jest.spyOn(Module, 'foo')
vm.methodThatUseFoo()
expect(fooSpy).toBeCalled()
})
这是我遇到的错误
Cannot spyOn on a primitive value; undefined given
最佳答案
此语法无法按预期工作:
jest.mock('/module/path', () => {
foo: jest.fn().mockReturnValue(true)
})
箭头函数返回
undefined
因为foo
是 label .隐式返回应该被解析为一个对象:
jest.mock('/module/path', () => ({
foo: jest.fn().mockReturnValue(true)
}))
或者考虑到它是默认导出,它更可能应该是:
jest.mock('/module/path', () => ({
default: {
foo: jest.fn().mockReturnValue(true)
}
}))
关于javascript - 如何在 Jest 中测试默认导出的 javascript 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60072308/