发布 npm 包的模拟以供 jest 的模块模拟​​系统使用

2024-02-27

我正在发布一个(私有)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(使用前将#替换为@)

发布 npm 包的模拟以供 jest 的模块模拟​​系统使用 的相关文章

随机推荐