2014-09-29 181 views
0

如果我正在測試爲表單編寫的驗證函數,測試方法在QUnit中的外觀如何?再說了,如果表單需要檢查名稱字段不爲空,我的功能測試這個功能貌似QUnit測試測試用例

function validNameCheck(form) 
{ 
    if (document.forms["formSecond"]["nameFull"].value=="") 
    { 
    alert("Name Field cannot be empty") 
    return false; 
    } 
    else 
    return true; 
} 

這將是一個可能的QUnit測試用例上面?

+0

的參數'form'似乎是沒用過 – 2014-09-29 15:49:52

回答

0

比方說,要傳遞給validNameCheck函數的參數是一個form要檢查是否爲空或不,我的意思是這樣的name元素:

var myName = document.forms["formSecond"]["nameFull"]; 

然後你的函數應該看起來像這樣:

function validNameCheck(form){ 
    if (form.value==""){ 
     alert("Name Field cannot be empty") 
     return false; 
    }else{ 
     return true; 
    } 
} 

請注意,我會更改您正在檢查的硬編碼元素。

然後你QUnit的測試應該是這樣的:

QUnit.test("CheckingName", function(assert) { 
    var value = false; 
    assert.equal(value, validNameCheck(myName), "We expect the return to be false"); 
}); 
0

我想借此@ Gepser的解決方案遠一點(但可以肯定的是解決方案的一部分)。如果您想通過名稱獲取表單,那麼您可能希望在每次測試之前使用QUnit的夾具來重置HTML。那麼你可能想要剔除alert方法,以便在測試時不會得到一堆。

在QUnit HTML文件:

<body> 
    <div id="qunit"></div> 
    <div id="qunit-fixture"> 
    <!-- Anything in here gets reset before each test --> 
    <form name="formSecond"> 
     <input type="text" name="nameFull"> 
    </form> 
    </div> 
    ... 
</body> 

然後在你的QUnit測試(無論是在HTML文件中我們在自己的JS文件):

QUnit.begin(function() { 
    // mock out the alert method to test that it was called without actually getting an alert 
    window.alert = function() { 
    window.alert.called++; 
    }; 
    window.alert.called = 0; 
}); 
QUnit.testDone(function() { 
    // reset the alert called count after each test 
    window.alert.called = 0; 
}); 

... 

// From @Gepser's answer... 
QUnit.test("CheckingName", function(assert) { 
    var value = false; 
    assert.equal(value, validNameCheck(), "We expect the return to be false"); 
    // add an assertion to make sure alert was called 
    assert.equal(1, window.alert.called, "alert was called only once"); 
});