我正在发布一个(私有)npm 包,并且也想为其发布模拟。我希望这些嘲笑能够被笑话的人接受模块模拟系统。 https://jestjs.io/docs/en/manual-mocks.html
该包是一个使用上下文并发出网络请求的反应库。该库的所有功能都是独立的并且经过充分测试。我希望消费者能够将其视为测试中的黑匣子,相信它能按预期工作。因此,我想发布它的模拟版本以进行测试。
// The real component
const ComplicatedComponent = props => {
// Access context here
return <div> Something based on context <div/>
}
// The mocked component
const ComplicatedComponent = props => <>ComplicatedComponent</>
在完美的世界中,消费者只需调用
jest.mock('my-library');
据我所知here https://jestjs.io/docs/en/manual-mocks.html#mocking-node-modules:这是不可能开箱即用的。这似乎意味着由消费者来编写模拟:
如果您正在模拟的模块是 Node 模块(例如:lodash),则模拟应放置在mocks与node_modules相邻的目录
任何人都可以建议一种好方法来发布模拟供我的库供笑话使用吗?
转发此评论来自@Sean22 https://stackoverflow.com/questions/58442280/publishing-mocks-for-an-npm-package-to-be-used-by-jests-module-mocking-system#comment118125458_58442280作为答案:
我终于弄清楚如何做到这一点。我将需要模拟的模块包含在我的 npm 模块中的常规 __ mock __ 子目录中。然后,在导入模块的代码中,jest.mock('/path/to/mocked/code') 将使用该 npm 模块代码的模拟版本
所以,请确保您的__mocks__/custom-mock.js
包含在您的包的构建中,使用应用程序将能够使用它????????
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)