我有以下代码:
let date1 = new Date("January 13, 2018 11:00:00");
console.log(date1.getTime());
console.log(typeof date1.getTime() === Number);
console.log(typeof date1.getTime());
console.log(typeof date1.getTime() === number);
打印哪些:
1515841200000
false
number
ReferenceError: number is not defined
at eval:31:40
at eval
at new Promise
所以看起来typeof date1.getTime()
是number
。但是,当我使用number
测试相等性时,我收到错误,当我使用Number
测试相等性时,我得到false
。
我想测试类型的原因是我有一个Jest测试,我正在检查变量是否为Number
:
expect.any(Number)
但是,测试从date1.getTime()
之类的语句中获取变量,并且测试失败而不是传递。
那么我如何测试类型,date1.getTime()
不会使测试失败?
答案 0 :(得分:0)
console.log(typeof date1.getTime() === 'number')
,因为typeof
运算符返回一个字符串。
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
您可以在断言中使用它:expect(typeof date1.getTime()).toBe('number')
答案 1 :(得分:0)
您可以使用:
expect(date1.getDate()).toEqual(expect.any(Number));