如何正确测试(使用jest)结果是否是实际的 JavaScript 函数?
describe('', () => {
it('test', () => {
const theResult = somethingThatReturnsAFunction();
// how to check if theResult is a function
});
});
我找到的唯一解决方案是使用
typeof
,如下所示:
expect(typeof handledException === 'function').toEqual(true);
这是正确的做法吗?
您可以使用
toBe
匹配器来检查typeof
运算符的结果是否为function
,请参阅示例:
describe("", () => {
it("test", () => {
const somethingThatReturnsAFunction = () => () => {};
const theResult = somethingThatReturnsAFunction();
expect(typeof theResult).toBe("function");
});
});
Jest 提供了一种很好的方法来检查所提供值的类型。
您可以使用
.toEqual(expect.any(<Constructor>))
检查提供的值是否属于构造函数的类型:
describe('', () => {
it('test', () => {
const theResult = somethingThatReturnsAFunction()
expect(theResult).toEqual(expect.any(Function))
})
})
构造函数的其他示例有:
String
& Number
。