我目前在编写使用@std/esm
的节点应用程序的测试时遇到问题。我在__mocks__
目录中设置了一个节点模块的手动模拟,下面的代码显示了该文件的测试使用了这个模拟的节点模块。 (它在db.mjs中使用)
const loader = require('@std/esm')(module, { cjs: true, esm: 'js' })
const Db = loader('../src/db').default
const db = new Db()
describe('getNotes', () => {
it('gets mocked note', () => {
db.getNote()
})
})
然而,当我运行Jest时,我的手动模拟没有被使用,它正在使用真实节点模块。
有没有人想过为什么会发生这种情况?
答案 0 :(得分:0)
笑话对您的模拟内容的位置很讲究。从他们关于mocking node modules的文档中:
例如,要模拟名为@ scope / project-name的作用域模块, 在 mocks / @ scope / project-name.js中创建文件, @ scope /目录。
您的情况应该是__mocks__/@std/esm.js