私はUI5でqUnitを使い慣れています。SAPUI5コアAPIを含む関数の単体テストの記述方法?
私は1つの機能をテストしたいformatter.js
formatDate: function(sTimeStamp) {
if (sTimeStamp) {
var iTimeStamp = Number(sTimeStamp.match(/\d/g).join("")),
oDateTimeFormat = DateFormat.getDateTimeInstance();
return oDateTimeFormat.format(new Date(iTimeStamp));
}
return sTimeStamp;
},
それのためのユニットテスト:明らかに
function formatDateTestCase(assert, sValue, fExpectedNumber) {
var fDate = formatter.formatDate(sValue);
assert.strictEqual(fDate, fExpectedNumber, "Format Date was correct");
}
QUnit.test("Should return valid date", function (assert) {
formatDateTestCase.call(this, assert, "/Date(1510026665790)/", "Nov 7, 2017, 11:51:05 AM");
});
私は言語設定を変更する場合、このテストケースは失敗します。どのように改善する?
ここでの主な問題は、formatDate
が副作用のある機能だと思います。私はこの機能自体を改善するべきですか? formatDate
にロケールを追加しますか?
私のテストケースでDateFormat
を使用する必要がありますか?それは私のテストを無意味にするでしょう。
なぜUI5コア機能のテストケースを作成しますか?あなたのテストでは、SAPのコードが正しく動作すること(そしてそのAPIを理解していること)だけが証明されます。 – Marc
@Marc、1.テストカバレッジ。 2.私はちょうどここで簡単な例を挙げました、 'DateFormat'を含む他の複雑なロジックがあるかもしれません、それをどのようにスタブするのですか? – Tina