正在寻找有关如何在lodash的反跳中模拟debounce
方法的建议。
我有一个函数,该函数先调用debouncedThing.cancel()
,然后再利用返回的去抖动值来调用debounce
。
我可以在测试中模拟.cancel()
,但在我的函数被称为jest.mock('lodash/debounce', () => fn => fn));
时除外。
我目前正在进行单元测试的顶部:
debouncedThing.cancel()
除了在我打电话给debouncedThing.cancel()
的地方以外,上述模拟都工作正常。在那些测试中,我得到一个错误,指出const debouncedThing = debounce(
(myFunc, data) => myFunc(data),
DEBOUNCE_DELAY_TIME,
);
const otherFunc = () => {
/* omitted */
debouncedThing.cancel();
}
不是一个函数。
我在哪里使用去抖动的伪代码如下:
output$Slider<-renderUI({
date_of_month<-as.numeric(format(as.Date(order$Date.Ordered), input$interval))
sliderInput("date_range", "Date Range", min = 2,
max = max(date_of_month), value = max(date_of_month)
,step = 1
,animate = animationOptions(loop = TRUE, interval = 5000))
})
答案 0 :(得分:0)
您只需将cancel
函数添加到fn
:
jest.mock('lodash/debounce', () => fn => {
fn.cancel = jest.fn();
return fn;
});
使用示例:
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!
});