Dan*_*ger 7 unit-testing mocking node.js reactjs jestjs
我正在发布一个(私有)npm 包,并且也想为其发布模拟。我希望 jest 的模块模拟系统能够拾取这些模拟。
该包是一个使用上下文并发出网络请求的反应库。该库的所有功能都是独立的并且经过充分测试。我希望消费者能够将其视为测试中的黑匣子,相信它能按预期工作。因此,我想发布它的模拟版本以进行测试。
// The real component
const ComplicatedComponent = props => {
// Access context here
return <div> Something based on context <div/>
}
// The mocked component
const ComplicatedComponent = props => <>ComplicatedComponent</>
Run Code Online (Sandbox Code Playgroud)
在完美的世界中,消费者只需调用
jest.mock('my-library');
Run Code Online (Sandbox Code Playgroud)
据我所知:这是不可能开箱即用的。这似乎意味着由消费者来编写模拟:
如果您正在模拟的模块是 Node 模块(例如:lodash),则模拟应放置在与 node_modules 相邻的模拟目录中
任何人都可以建议一种好方法来发布模拟,供笑话使用我的库吗?
重新发布@Sean22 的评论作为答案:
我终于弄清楚如何做到这一点。我将需要模拟的模块包含在我的 npm 模块中的常规 __ mock __ 子目录中。然后,在导入模块的代码中,jest.mock('<npm_module>/path/to/mocked/code') 将使用该 npm 模块代码的模拟版本
因此,请确保您的__mocks__/custom-mock.js包包含在包的构建中,并且使用的应用程序将能够使用它
| 归档时间: |
|
| 查看次数: |
840 次 |
| 最近记录: |