[英]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.