【问题标题】:`toBeInstanceOf(Number)` does not work in jest`toBeInstanceOf(Number)` 不能开玩笑
【发布时间】:2019-03-04 04:44:46
【问题描述】:

我有一个测试如下:

expect(result.data.quota).toBeInstanceOf(Number);

此测试失败,出现一个奇怪的错误,指出预期的数字和收到的数字:

 expect(value).toBeInstanceOf(constructor)

    Expected constructor: Number
    Received constructor: Number
    Received value: 2000

【问题讨论】:

    标签: jestjs babel-jest


    【解决方案1】:

    以下适用于所有构造函数:

    expect(value).toEqual(expect.any(Number));

    【讨论】:

      【解决方案2】:

      期望(值).not.toBeNaN();

      编辑:我会选择@bszoms 解决方案:

      expect(typeof value).toBe('number')
      

      【讨论】:

      • 这是错误的。例如,False 不是 NaN,也不是数字。
      • 这个答案必须明确避免。这将使您的 ANYTHING 测试成功,但 NaN 除外。 false, "some string", true, Promise, ReactComponent 你的名字
      【解决方案3】:

      您也可以这样做:expect(typeof <value>).toBe('number')

      或者您可以使用jest-extended,它添加了包括toBeNumber在内的一系列匹配器。

      均由讨论here提供。

      【讨论】:

        【解决方案4】:

        按照@stephan 的说法,这适用于基于异步/承诺的方法:

        await expect(asyncFunction()).resolves.toEqual(expect.any(Number));
        

        【讨论】:

          猜你喜欢
          • 2018-02-13
          • 2017-07-14
          • 1970-01-01
          • 1970-01-01
          • 2020-07-18
          • 2018-09-25
          • 1970-01-01
          • 1970-01-01
          • 2020-11-22
          相关资源
          最近更新 更多