繁体   English   中英

如何开玩笑地从同一模块中窥探 function?

[英]How to spyOn a function from the same module in jest?

考虑这组代码片段,我想为function A编写单元测试,它在执行期间内部调用function B 假设B是一组 API 调用,用于验证我想将返回值模拟为真。

但是这种spyOn方法不起作用,并且B中的 API 调用仍然被执行。 我已经看到 mocking 的方法是完整的模块jest.requireActual() ,但它们似乎也不起作用。

在不改变代码库index.ts的情况下,有什么更好的方法来测试这些功能?

 //index.ts async function A (a:string, b:string, c:string) { // code await B(data); // code } async function B (data:customType) { //code //API calls //code } export default { A, B }

 //index.test.ts import index from '../index.ts'; describe('Test suit', ()=>{ it('should be a test for function A', async ()=> { jest.spyOn(index, 'B').mockReturnValue(true); // code const result = await index.A('a','b','c'); // code }) })

当函数仅与 jest 位于同一模块中时,没有真正的好方法。

但是你可以使用Rewire ,它在这个答案中得到了解释,并且在我的类似情况下工作得很好: https://stackoverflow.com/a/52725067/16068019

否则,如果这是一个选项,您可以将您的一个功能移动到不同的模块,但这并不总是一个选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM