簡體   English   中英

QUnit測試測試用例

[英]QUnit Testing Test Case

如果我正在測試為表單編寫的驗證功能,則測試方法在QUnit中的外觀如何? 說,如果表單需要檢查名稱字段不為空,並且我測試此功能的函數看起來像

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

上面可能有什么QUnit測試用例?

可以說,傳遞給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" );
});

我將進一步介紹@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" );
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM