javascript-开玩笑-模拟一个函数,该函数又定义了一个方法

前端之家收集整理的这篇文章主要介绍了javascript-开玩笑-模拟一个函数,该函数又定义了一个方法 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在将一些旧测试转换为使用Jest,并且有一个称为Services.Transactions.get的函数.通常,您将回调传递给它,以处理从远程API返回的数据.在我的测试中,我在模拟它,使用

jest.spyOn(Services.Transactions,'get').mockImplementation((callback) => { callback(someJsObject); });

到现在为止还挺好.

现在的问题是,它又具有方法Services.Transactions.get.watch.我正在测试的模块同时使用了这两个功能.一旦模拟了上面的第一个,就无法模拟watcher方法.有人告诉我Services.Transactions.get.watch不是一个函数.

我试过了:

>使用在其上定义的空watch方法定义函数,并将其用作get的实现.
>尝试也替换使用watchImplementation调用的watch方法

以上都不起作用.文件服务不是ES6模块,因此我更希望避免进行模块级模拟.我还有其他选择吗?

最佳答案
那么简单的方法呢:

const mock = jest.spyOn(Services.Transactions,'get');
mock.watch = jest.fn();
mock.mockImplementation(...);
原文链接:https://www.f2er.com/js/531099.html

猜你在找的JavaScript相关文章