gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:57:35 25 4
gpt4 key购买 nike

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

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

到目前为止一切顺利。

现在的问题是它反过来有一个方法Services.Transactions.get.watch。我正在测试的模块同时使用了这两个功能。一旦我模拟了上面的第一个,我就不能模拟观察者方法。我被告知 Services.Transactions.get.watch 不是函数。

我试过:

  • 定义一个带有空 watch 方法的函数,并将其用作 get 的实现。
  • 尝试使用 mockImplementation 调用替换 watch 方法

以上均无效。来自的文件服务不是 ES6 模块,因此我宁愿避免进行模块级模拟。我还有其他选择吗?

最佳答案

直接的方法怎么样:

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

关于javascript - Jest - 模拟一个函数,该函数又定义了一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54205822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com