【发布时间】:2018-05-12 19:03:38
【问题描述】:
我是使用 UI5 的 qUnit 的新手。
我想测试一个函数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,1. 用于测试覆盖率。 2.我这里只是举个简单的例子,可能还有其他复杂的逻辑包含
DateFormat,如何stub呢?
标签: javascript unit-testing sapui5 sinon qunit