新手寫單元測試和「嘲笑」的概念更爲確切。我有一個基本的功能「addPercentSign」,增加了一個百分號用戶輸入如果是50-100之間:我現在面臨 如何存根有問題的代碼片段[單元測試]
問題
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 + "%";
//Error: cannot setValue of undefined. How can I 'stub' the line below?
control.learningCurve.setValue(finalOutput);
return finalOutput;
};
}
}
的問題
是當我寫這個函數的單元測試,我不能測試返回的值(finalOutput),因爲它上面的行返回一個錯誤,因爲它依賴於DOM元素(control.learningCurve)來設置一個值。由於這是一個單元測試,我必須將這個函數與任何依賴關係隔離。因此,我需要'模擬''setValue'調用。我想創建一個存根將是有道理的,但我不知道如何?
下面是單元測試代碼,我想測試上述功能(addPercentSign):
function (formatter, viewControls) {
"use strict";
var testEvent = {
getParameters : function() {
return {value : 50}
}
}
QUnit.module("Formatter Functions");
QUnit.test("Add Percent Sign", function (assert) {
assert.ok(formatter.addPercentSign(testEvent, viewControls) == '50.0%', "Percent Sign Added: Pass");
});
}
問題
我怎麼能嘲笑的制定者,所以我可以單元測試這個功能沒有DOM依賴關係?:
control.learningCurve.setValue(finalOutput)
謝謝,你能展示如何插入上面的單元測試?它看起來像第一個參數是control.learningCurve對象,而第二個是我想'存根'的函數? –
是的,它傳遞sinon.stub(對象,「方法」)作爲參數。 Sinon文檔有關於如何使用存根的更多細節。 – SafeHouse
謝謝,但我發現他們的文檔非常難以遵循somone只是學習嘲笑,存根,間諜.. –