Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何正确测试结果的类型是否为javascript';功能';开玩笑?_Javascript_Unit Testing_Jestjs - Fatal编程技术网

如何正确测试结果的类型是否为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

如何正确地测试(使用)结果是否是实际的javascript函数

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版本。我在一个空白文件中使用了它,除了上面示例中截取的代码之外,没有其他内容。