从Promise开玩笑的模拟回调函数

桑德斯

我正在尝试在组件内部测试一个仅在API请求成功时调用的函数。对于上下文,当您单击按钮时,我将此函数称为:

return onUpdate(params, setError, success, cancel);

并在成功时调用成功函数:

const success = (data) => {
  // do some stuff when successful
};

onUpdate函数将被导入,并且是如下所示的API请求:

const onUpdate = (params, onError, onSuccess, onCancel) => {
  save(params)
    .then((data) => {
      if (onSuccess) {
        onSuccess(data.data);
      }
    })
    .catch((error) => {
      if (axios.isCancel(error)) {
        if (onCancel) {
          onCancel();
        }
      } else {
        onError(error);
      }
    });
};

我一直在测试中嘲笑此功能的实现,如下所示:

jest.mock('../../dataAccess', () => ({
  onUpdate: jest
    .fn()
    .mockImplementation(
      (params, onError, onSuccess) =>
        new Promise((resolve) => resolve(onSuccess(response))),
    ),
}));

通过阅读docs / stack溢出,它看起来像是在一个示例问题中传递了回调,并且如果我添加其他参数并添加cb为最后一个参数,它似乎仍然无法激发我的成功功能。

我需要模拟什么才能获得测试以在组件中调用成功函数?我敢肯定这是很小的东西,但不太确定是什么。

多里·阿维拉姆

当您将new Promise其函数从基于回调的函数基本返回到异步函数时,请尝试执行类似以下操作:

jest.mock('../../dataAccess', () => ({
  onUpdate: jest
    .fn()
    .mockImplementation(
      (params, onError, onSuccess) => {
        onSuccess(response)
      }
    ),
}));

甚至更简单:

jest.mock('../../dataAccess', () => ({
  onUpdate: (params, onError, onSuccess) => {
     onSuccess(response)
  }
}));

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

开玩笑-函数fs.writefile中的模拟回调

来自分类Dev

开玩笑-模拟update()函数

来自分类Dev

开玩笑:模拟构造函数

来自分类Dev

开玩笑测试解决拒绝回调

来自分类Dev

开玩笑:模拟构造函数以返回错误

来自分类Dev

无法模拟createQueryBuilder函数typeorm nestjs开玩笑

来自分类Dev

在函数内部开玩笑

来自分类Dev

测试来自玩笑模拟事件回调的返回值

来自分类Dev

开玩笑地模拟一个toPromise函数.toPromise不是一个函数

来自分类Dev

如何模拟axios API调用?开玩笑

来自分类Dev

状态未设置开玩笑模拟

来自分类Dev

如何开玩笑模拟/间谍类的属性

来自分类Dev

开玩笑的自动模拟失败:TypeError:fs.readdirSync不是一个函数

来自分类Dev

开玩笑的模拟不允许在单个测试中解析内部函数

来自分类Dev

开玩笑:无法通过`jest.fn()`保留对模拟函数的引用

来自分类Dev

PHPUnit-模拟回调函数

来自分类Dev

开玩笑地对一个函数进行单元测试,该函数调用一个返回Promise的函数

来自分类Dev

TypeError:XXXXXXX不是函数(在开玩笑的同时)

来自分类Dev

开玩笑如何测试调用函数的行?

来自分类Dev

模拟的npm模块以开玩笑的方式返回空对象

来自分类Dev

开玩笑:如何在node_modules中模拟库?

来自分类Dev

如何在类中开玩笑地模拟节点模块?

来自分类Dev

用 Typescript 开玩笑地模拟一个库

来自分类Dev

如何在模拟函数的回调中调用解析?

来自分类Dev

jQuery Promise回调

来自分类Dev

等待回调函数执行,直到 promise 完成

来自分类Dev

开玩笑抛出TypeError:this.inputEl.focus不是函数#1964

来自分类Dev

开玩笑-断言异步函数引发测试失败

来自分类Dev

开玩笑-ReferenceError:导入的函数未定义

Related 相关文章

热门标签

归档