在最简单的测试中,我正在尝试测试以下函数:
上述函数是输入字段(id="learningCurveInput")上的事件监听器。当用户在该字段中键入一个值,然后通过“ENTER”键触发“submit”事件时,将调用“addPercentSign”函数。
我知道,单元测试的想法是尽可能地使测试与任何依赖项隔离开来。因此,要针对DOM操作进行测试,可以将元素附加到test.html的div下面,如下所示:
addPercentSign: function (oEvent, control) {
var inputVal = oEvent.getParameters().value;
var inputNumber = parseFloat(inputVal);
if (inputNumber) {
if (inputNumber < 50 || inputNumber > 100) {
//see learningCurveFormatCheck
return null;
} else {
var finalVal = inputNumber.toFixed(1);
var finalOutput = finalVal + "%";
control.learningCurve.setValue(finalOutput);
return finalOutput;
};
}
}
上述函数是输入字段(id="learningCurveInput")上的事件监听器。当用户在该字段中键入一个值,然后通过“ENTER”键触发“submit”事件时,将调用“addPercentSign”函数。
我知道,单元测试的想法是尽可能地使测试与任何依赖项隔离开来。因此,要针对DOM操作进行测试,可以将元素附加到test.html的div下面,如下所示:
$('<input id="learningCurveInput" type="text"/>').appendTo('#qunit-fixture');
有人能解释一下接下来该怎么做吗?这个函数依赖于传递进来的Event对象来获取输入值。我不确定如何在测试中重新创建它。我附上了我的单元测试,但只是为了展示我的想法:
...,
function (formatter, viewControls) {
"use strict";
QUnit.module("Formatter Object Exists")
QUnit.test("Learning Curve Input Value", function (assert) {
$('<input id="learningCurveInput" type="text"/>').appendTo('#qunit-fixture');
$("#learningCurveInput").val("55");
var result = '55';
equals(result, $('#learningCurveInput').val(), "testing input value");
});
QUnit.test("addPecentSign Function", function (assert) {
//how to test this dom-dependent function?
});
}
);
摘要问题
如何对在输入字段“提交”时调用的“addPercentSign”函数进行单元测试?