2017-02-17 326 views
1

为了简化日期(日期无效),让我们看看这个功能越来越日期并返回修改的日期(日开始):如何测试茉莉花

const getStartOfDay = date => { 
    const newDate = new Date(date); 
    newDate.setHours(0, 0, 0, 0); 
    return newDate; 
} 

现在我要实现一些测试与无效值即:​​函数返回Date(Invalid Date)

我试图测试,如:

expect(util.getStartOfDay("hello")).toBe(new Date("hello")); 

,但我得到:

预计日期(日期无效)等于日期(日期无效)。

toEquals()同样的错误......

其他日期我比较getTime()但在这里我不能...所以我得到stucked ...

的我怎么能测试它的任何想法?

回答

1

发生这种情况是因为在JS NaN != NaN和无效日期有NaN时间。所以,你可以检查util.getStartOfDay("hello").getTime()NaN

expect(isNaN(util.getStartOfDay("hello").getTime())).toBe(true); 
1

Detecting an "invalid date" Date instance in JavaScript一些见解。

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(); 
    }); 
}); 

这里的的jsfiddle https://jsfiddle.net/backpackcoder/jj3061fk/1/