2017-02-17 163 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/