2014-09-29 14 views
0

폼용으로 작성된 유효성 검사 함수를 테스트 할 때 QUnit에서 테스트 메서드가 어떻게 보이나요? 양식이 기능은 위의 수 QUnit 테스트 케이스가 될 것입니다 무엇 QUnit 테스트 테스트 케이스

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

처럼 보인다 된 테스트 그 이름 필드에없는 널 내 기능을 확인해야 할 경우, 말?

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

그런 다음 기능 :

+0

인수'form'는 것으로 보인다 미사용의 –

답변

0

당신이 validNameCheck 함수로 전달하는 매개 변수가 비어있는 경우 검사 할 여부, 나는 이런 식으로 뭔가 의미 formname 요소라고 말할 수 있습니다 다음과 같아야합니다.

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의 솔루션 @ 걸릴 것

. 이름으로 폼을 잡고 싶다면 각 테스트 전에 HTML을 재설정하기 위해 QUnit의 fixture를 사용하고 싶을 것입니다. 그런 다음 alert 메소드를 조롱하여 테스트하는 동안 그 중 많은 것을 얻지 못하게 할 수 있습니다. 당신의 QUnit 테스트에서 다음

<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> 

(그 중 하나 HTML에 자신의 JS 파일에 우리의 파일) : 다음 QUnit의 HTML 파일에서

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"); 
}); 
관련 문제