`toBeInstanceOf(Number)` 不能开玩笑
Posted
技术标签:
【中文标题】`toBeInstanceOf(Number)` 不能开玩笑【英文标题】:`toBeInstanceOf(Number)` does not work in jest 【发布时间】: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
【问题讨论】:
【参考方案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));
【讨论】:
以上是关于`toBeInstanceOf(Number)` 不能开玩笑的主要内容,如果未能解决你的问题,请参考以下文章