在Jest中,您可以使用jest.fn()
方法创建一个模拟的高阶函数(Higher-Order Function, HOF)
假设我们有一个名为applyFunction
的高阶函数,它接受一个函数作为参数,并将其应用于两个数字:
// applyFunction.js
function applyFunction(fn, a, b) {
return fn(a, b);
}
module.exports = applyFunction;
要模拟此高阶函数并测试它如何传递给它的函数,我们可以这样做:
// applyFunction.test.js
const applyFunction = require("./applyFunction");
describe("applyFunction", () => {
const mockFunction = jest.fn((a, b) => a + b);
it("should call the given function with the provided arguments and return the result", () => {
const result = applyFunction(mockFunction, 1, 2);
expect(mockFunction).toHaveBeenCalledWith(1, 2);
expect(result).toBe(3);
});
});
在这个例子中,我们首先使用jest.fn()
创建一个模拟的函数mockFunction
,该函数接受两个参数并返回它们的和。然后,我们将这个模拟函数作为参数传递给applyFunction
。
在测试中,我们调用applyFunction
并传递mockFunction
、1
和2
作为参数。然后我们使用expect
和toHaveBeenCalledWith
断言来检查mockFunction
是否使用提供的参数被调用。最后,我们使用expect
和toBe
断言来检查applyFunction
的返回值是否正确。
这样,我们就可以模拟一个高阶函数并验证它如何处理传递给它的函数。
领取专属 10元无门槛券
手把手带您无忧上云