1
我設置grunt.js來運行qunit測試,對於某些測試grunt失敗。失敗的測試(4次測試中有3次失敗)都是我用一個字符串隱式地添加一個整數的字符串連接。如果我在瀏覽器,瀏覽器控制檯和使用該代碼的網頁中手動運行測試,此工作正常。grunt.js聲稱NaN瀏覽器不是
這裏發生了什麼,我該如何解決?
咕嚕輸出
Running "qunit:all" (qunit) task
Testing html_client/tests.html F..........
>> CommonTests - Test getDateAsString
>> Message: null
>> Actual: "NaN-NaN-NaN"
>> Expected: "1980-02-13"
>> at file:...
>> CommonTests - Test getDateAsString
>> Message: null
>> Actual: "NaN-NaN-NaN"
>> Expected: "1980-12-03"
>> at file:...
>> CommonTests - Test getDateAsString
>> Message: null
>> Actual: "NaN-NaN-NaN"
>> Expected: "1980-02-03"
>> at file:...
測試代碼
QUnit.test("Test getDateAsString", function() {
QUnit.equal(Common.getDateAsString(new Date('1980-2-13')), '1980-02-13');
QUnit.equal(Common.getDateAsString(new Date('1980-12-3')), '1980-12-03');
QUnit.equal(Common.getDateAsString(new Date('1980-12-13')), '1980-12-13');
QUnit.equal(Common.getDateAsString(new Date('1980-2-3')), '1980-02-03');
});
代碼
var getDateAsString = function(date) {
var dd = date.getDate();
var mm = date.getMonth() + 1; // January is 0!
var yyyy = date.getFullYear();
return yyyy + '-' + ((mm < 10) ? '0' + mm : mm) + '-' + ((dd < 10) ? '0' + dd : dd);
};
求解
重寫測試,因此解決了這個問題。
QUnit.test("Test getDateAsString", function() {
QUnit.equal(Common.getDateAsString(new Date(1980, 1, 13)), '1980-02-13');
QUnit.equal(Common.getDateAsString(new Date(1980, 11, 3)), '1980-12-03');
QUnit.equal(Common.getDateAsString(new Date(1980, 11, 13)), '1980-12-13');
QUnit.equal(Common.getDateAsString(new Date(1980, 1, 3)), '1980-02-03');
});
你是正確的,但我只着眼於支持最新的文檔(手機瀏覽器)。它也不能解釋爲什麼四個測試用例中只有三個失敗,所有四個測試用例都會失敗並顯示你的解釋。對? – MdaG
@MdaG帶適當填充作用的語法,例如'new Date('1980-12-13')'應該是在這裏通過 – Esailija
@MdaG的語法,句法必須精確地爲'yyyy-mm-dd',兩位數都是月份和日期。最新的移動瀏覽器也不能與最新的桌面瀏覽器進行比較。他們缺乏桌面上的功能。 – user568109