首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用jest模拟lodash debounce.cancel?

如何用jest模拟lodash debounce.cancel?
EN

Stack Overflow用户
提问于 2019-03-26 03:40:57
回答 1查看 4.5K关注 0票数 2

我有一个函数,它调用debounce,然后利用返回的去反弹值来调用debouncedThing.cancel()

除了当我的函数被称为.cancel()时,我可以在我的测试中很好地模拟debounce

在我的单元测试的顶端,我目前正在做:

jest.mock('lodash/debounce', () => fn => fn));

Psuedo代码的地方,我正在使用debounce如下所示:

代码语言:javascript
复制
const debouncedThing = debounce(
  (myFunc, data) => myFunc(data),
  DEBOUNCE_DELAY_TIME,
);

const otherFunc = () => {
 /* omitted */
 debouncedThing.cancel();
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-26 05:53:10

您只需要向fn添加cancel函数

代码语言:javascript
复制
jest.mock('lodash/debounce', () => fn => {
  fn.cancel = jest.fn();
  return fn;
});

使用中的示例:

代码语言:javascript
复制
const debounce = require('lodash/debounce');

test('debouncedThing', () => {
  const thing = jest.fn();
  const debouncedThing = debounce(thing, 1000);

  debouncedThing('an arg');
  expect(thing).toHaveBeenCalledWith('an arg');  // Success!

  debouncedThing.cancel();  // no error
  expect(debouncedThing.cancel).toHaveBeenCalled();  // Success!
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55345281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档