如何使用 Jest 测试 returns 箭头函数的函数?
How to test a function that returns an arrow function with Jest?
我有这样的功能:
export const myFunc = (a, b ,callBack) => {
const timer = setTimeout(() => {
callBack(a+b);
}, 10);
return () => clearTimeout(timer);
};
我可以通过这样做很好地测试回调函数:
jest.useFakeTimers();
describe('myFunc', () => {
const callBack = jest.fn();
it('runs myFunc', () => {
myFunc(1, 2, callBack);
jest.runAllTimers();
expect(callBack).toHaveBeenCalledWith(3);
});
然而,最后一行 return () => clearTimeout(timer)
从未以某种方式测试过。开玩笑的报告只是说这一行 function not covered
和 statement not covered
。谁能告诉我一种方法来覆盖这一行而不使用任何其他外部测试库(如酶)?
函数没有被调用,所以没有覆盖。
另一个测试是:
let cleanup = myFunc(1, 2, callBack);
cleanup()
jest.runAllTimers();
expect(callBack).not.toHaveBeenCalled();
我有这样的功能:
export const myFunc = (a, b ,callBack) => {
const timer = setTimeout(() => {
callBack(a+b);
}, 10);
return () => clearTimeout(timer);
};
我可以通过这样做很好地测试回调函数:
jest.useFakeTimers();
describe('myFunc', () => {
const callBack = jest.fn();
it('runs myFunc', () => {
myFunc(1, 2, callBack);
jest.runAllTimers();
expect(callBack).toHaveBeenCalledWith(3);
});
然而,最后一行 return () => clearTimeout(timer)
从未以某种方式测试过。开玩笑的报告只是说这一行 function not covered
和 statement not covered
。谁能告诉我一种方法来覆盖这一行而不使用任何其他外部测试库(如酶)?
函数没有被调用,所以没有覆盖。
另一个测试是:
let cleanup = myFunc(1, 2, callBack);
cleanup()
jest.runAllTimers();
expect(callBack).not.toHaveBeenCalled();