我正在将一些旧测试转换为使用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模块,因此我更希望避免进行模块级模拟.我还有其他选择吗?
最佳答案
那么简单的方法呢:
原文链接:https://www.f2er.com/js/531099.htmlconst mock = jest.spyOn(Services.Transactions,'get');
mock.watch = jest.fn();
mock.mockImplementation(...);