我已经阅读了很多关于此的问题和博客,但仍有一些地方不对。
人为的例子,但假设我有一个像这样的 testDependency.ts
文件:
export default {
some: 'things',
to: 'be',
mocked: 'please'
}
然后我尝试在我的测试中模拟默认模块:
import * as testDep from 'lib/testDependency'
jest.mock('lib/testDependency', () => ({
__esModule: true,
default: { now: 'mocked' }
}))
describe('Test Dependency', () => {
it('should work', () => {
console.log(testDep) // would expect this to log { now: 'mocked' }
expect(testDep.now).toEqual('mocked')
})
})
console.log 返回原始值,期望失败。
我已尝试使用相对导入代替 lib/...
,并且此模块未导入代码库中的其他任何位置。我也试过使用 import testDep from 'lib/testDependency'
导入,但也没有奏效。
还有什么可以阻止它工作的吗?我对这里应该发生的事情的理解有误吗?
答案 0 :(得分:0)
测试失败,因为 testDep
是一个模块,而不是您期望的默认模块值。如果您想检查 now
属性值,可以使用 testDep.default
获取它。
我建议您更改此设置:
import * as testDep from 'lib/testDependency';
到:
// import default
import testDep from 'lib/testDependency';