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

前端之家收集整理的这篇文章主要介绍了javascript-开玩笑-模拟一个函数,该函数又定义了一个方法 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_1@我正在将一些旧测试转换为使用Jest,并且有一个称为Services.Transactions.get的函数.通常,您将回调传递给它,以处理从远程API返回的数据.在我的测试中,我在模拟它,使用

@H_301_1@

jest.spyOn(Services.Transactions,'get').mockImplementation((callback) => { callback(someJsObject); });
@H_301_1@到现在为止还挺好.

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

@H_301_1@我试过了:

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

@H_301_1@以上都不起作用.文件服务不是ES6模块,因此我更希望避免进行模块级模拟.我还有其他选择吗?
最佳答案
那么简单的方法呢:

@H_301_1@

const mock = jest.spyOn(Services.Transactions,'get');
mock.watch = jest.fn();
mock.mockImplementation(...);

猜你在找的JavaScript相关文章