如何在 Jest 中测试结果的类型是否为 javascript“函数”?

问题描述 投票:0回答:3

如何正确测试(使用jest)结果是否是实际的 JavaScript 函数?

describe('', () => {
    it('test', () => {
        const theResult = somethingThatReturnsAFunction();
        // how to check if theResult is a function
    });
});

我找到的唯一解决方案是使用

typeof
,如下所示:

    expect(typeof handledException === 'function').toEqual(true);

这是正确的做法吗?

javascript unit-testing jestjs
3个回答
23
投票

您可以使用

toBe
匹配器来检查
typeof
运算符的结果是否为
function
,请参阅示例:

describe("", () => {
  it("test", () => {
    const somethingThatReturnsAFunction = () => () => {};
    const theResult = somethingThatReturnsAFunction();
    expect(typeof theResult).toBe("function");
  });
});

22
投票

Jest 提供了一种很好的方法来检查所提供值的类型。

您可以使用

.toEqual(expect.any(<Constructor>))
检查提供的值是否属于构造函数的类型:

describe('', () => {
  it('test', () => {
    const theResult = somethingThatReturnsAFunction()
    expect(theResult).toEqual(expect.any(Function))
  })
})

构造函数的其他示例有:

String
&
Number


0
投票

可以说比这里的任何其他答案都更优雅:

expect(theResult).toBeInstanceOf(Function);

Jest 文档中有一个这样的示例。

© www.soinside.com 2019 - 2024. All rights reserved.