我在输入字段上有一个函数,它为用户输入的值添加百分号。该功能如下所示:
addPercentSign: function (oEvent, control) {
var inputVal = oEvent.getParameters().value;
var inputNumber = parseFloat(inputVal);
if (inputNumber) {
if (inputNumber < 50 || inputNumber > 100) {
return null;
} else {
var finalVal = inputNumber.toFixed(1);
var finalOutput = finalVal + "%";
control.learningCurve.setValue(finalOutput);
};
}
}
由于此函数依赖于Event对象,我如何“模拟”参数(oEvent对象)(使用Sinon.js或mocks)为此函数创建单元测试?单元测试的经验法则是尽可能地隔离单元(addPercentSign函数)而没有任何依赖性。
由于oEvent对象是我们检索用户输入的方式,我不确定编写此特定测试的策略是什么?我只是在单元测试中创建一个看起来与事件对象相同的对象吗?
QUnit.test("Check for Percent Sign", function (assert) {
var testOEvent = {value: '25'}
assert.ok(formatter.addPercentSign(testOEvent) == 25, "Test");
});
答案 0 :(得分:0)
使用一个对象来调用此函数,该对象模拟您的函数所使用的事件的所有接口。
例如:
var testOEvent = {
getParameters:function(){
return {value:"1.0"}
}
}