qunit テストを実行するように grunt.js をセットアップしていますが、特定のテストでは grunt が失敗します。失敗したテスト (4 つのテストのうち 3 つが失敗した) はすべて、暗黙的に文字列連結を引き起こす文字列を含む整数を追加している場所です。ブラウザ、ブラウザ コンソール、およびコードを使用する Web ページでテストを手動で実行すると、これは正常に機能します。
ここで何が起こっていて、どう対処すればよいですか?
うなり声の出力
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' );
});