【发布时间】:2017-04-25 11:15:34
【问题描述】:
在最简单的测试中,我正在尝试测试以下功能:
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”键),“addPercentSign”函数被调用。
我了解单元测试的想法是尽可能地将测试与任何依赖项“隔离”。因此,要针对 DOM 操作进行测试,可以将元素附加到 div 下的 test.html,如下所示:
$('<input id="learningCurveInput" type="text"/>').appendTo('#qunit-fixture');
谁能解释一下接下来要做什么?该函数依赖于传入的事件对象来检索输入值。我不确定如何在测试中重新创建它。我在下面附上了我的单元测试,但这只是为了展示我的想法:
...,
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”函数进行单元测试?
【问题讨论】:
标签: javascript jquery unit-testing dom qunit