如何正确测试结果的类型是否为javascript';功能';开玩笑?
如何正确地测试(使用)结果是否是实际的javascript函数如何正确测试结果的类型是否为javascript';功能';开玩笑?,javascript,unit-testing,jestjs,Javascript,Unit Testing,Jestjs,如何正确地测试(使用)结果是否是实际的javascript函数 describe('', () => { it('test', () => { const theResult = somethingThatReturnsAFunction(); // how to check if theResult is a function }) }); 我找到的唯一解决方案是使用typeof,如下所示: expect(typeof handledExcepti
describe('', () => {
it('test', () => {
const theResult = somethingThatReturnsAFunction();
// how to check if theResult is a function
})
});
我找到的唯一解决方案是使用typeof,如下所示:
expect(typeof handledException === 'function').toEqual(true);
这是正确的方法吗?您可以使用
toBe
matcher来检查typeof
运算符的结果是否为函数,请参见示例:
describe("", () => {
it("test", () => {
const somethingThatReturnsAFunction = () => () => {};
const theResult = somethingThatReturnsAFunction();
expect(typeof theResult).toBe("function");
});
});
对否则你会怎么做?我可能会用LoDash的isFunction
之类的东西来结束这个检查,但这是次要的(因为我几乎总是有一个LoDash依赖项)。我认为有一种方法可以通过jest api,比如expect(result)。toBe('function')
,或者idk一些与toBe相关的东西。感谢@davenewtonth给出的答案,它将把它与字符串函数
进行比较,这不是您想要的。不过,可能有一个函数类型匹配器;我只是不知道。错误:expect(received)。toBe(expected)//Object.is equality预期:“function”received:[function anonymous]Hi@Rob,刚刚用节点v12和Jest v26测试了它,我的示例仍然有效。请检查您的节点和Jest版本。我在一个空白文件中使用了它,除了上面示例中截取的代码之外,没有其他内容。