Javascript 如何用茉莉花测试日期(无效日期)
为了简化,让我们看看这个函数获取日期并返回修改的日期(开始日期): 现在我想用无效值实现一些测试,例如:Javascript 如何用茉莉花测试日期(无效日期),javascript,date,testing,jasmine,Javascript,Date,Testing,Jasmine,为了简化,让我们看看这个函数获取日期并返回修改的日期(开始日期): 现在我想用无效值实现一些测试,例如:getStartOfDay(newdate(“HELLO”)函数返回日期(无效日期) 我试着做如下测试: expect(util.getStartOfDay("hello")).toBe(new Date("hello")); 但我得到: 预期日期(无效日期)等于日期(无效日期) 与toEquals()相同的错误 其他日期我与getTime()比较,但在这里我不能。。。所以我被绊倒了 知道如
getStartOfDay(newdate(“HELLO”)代码>函数返回日期(无效日期)
我试着做如下测试:
expect(util.getStartOfDay("hello")).toBe(new Date("hello"));
但我得到:
预期日期(无效日期)等于日期(无效日期)
与toEquals()相同的错误
其他日期我与getTime()
比较,但在这里我不能。。。所以我被绊倒了
知道如何测试它吗?这是因为在JSNaN!=NaN
和无效日期具有NaN
时间。因此,您可以检查util.getStartOfDay(“hello”).getTime()
是否为NaN
expect(isNaN(util.getStartOfDay("hello").getTime())).toBe(true);
从中获得一些见解
这是JSFIDLE
expect(isNaN(util.getStartOfDay("hello").getTime())).toBe(true);
const isValidDate = date => {
if ( Object.prototype.toString.call(date) === "[object Date]" ) {
// it is a date
if ( isNaN( date.getTime() ) ) { // date.valueOf() could also work
return false;
}
else {
return true;
}
}
else {
return false;
}
}
describe("Suite", function() {
it("handles invalid Dates", function() {
expect(isValidDate(getStartOfDay("hello")) ).toBeFalsy();
});
});