2013-04-26 1 views
1

이 테스트가 실패하지 않고 이상한 이유가 없어서 이상한 문제가 발생했습니다. 무슨 일이 일어나고 있는지 잘 모르겠습니다. 때로는 시험을 새로 고치고 통과 할 것입니다. 다른 때에는 아무 것도 변경하지 않고 실패합니다. 누군가가 무슨 일이 일어나고 있는지 설명 할 수 있는지 궁금합니다.QUnit 테스트 - 넉 아웃 observableArray가 제대로 평가되지 않음

var viewModel = function() { 
    return { TestDummy: ko.observable() }; 
}; 

QUnit.test("Test 1", function() { 
    var curModel = new viewModel(); 
    validationTestCore.testMaxLength(curModel.TestDummy, '12345'); 

    QUnit.equal(curModel.TestDummy.errorMessages().length, 1); 
}); 

당신은 curModel.TestDummy가 관찰 것을 볼 수 있습니다 여기에

은 몇 가지 예제 코드입니다. 이 관찰은 errorMessages observableArray 이렇게가 추가된다 validationTestCore.testMaxLength로 전달된다 : 테스트가 실패하는 경우

TestDummy.errorMessages = ko.observableArray(); 
TestDummy.errorMessages.push({ errorMessage: 'hello'}); 

상기 QUnit 결과는 길이가 0

상관을 평가하는 것을 보여준다 아이디어?

+1

나머지보기 모델을 게시 할 수 있습니까? 적어도 녹아웃 유효성 검사 유효성 검사가 구성되어 있다고 가정합니다 ... –

답변

1

나는 Knockout.js에 대해 모르겠다.

그러나 이러한 문제의 일반적인 원인은 테스트가 비 원자력이기 때문입니다. 이전 테스트의 성공 또는 실패가 다른 테스트에 영향을 미치고 있습니다.

테스트 원 자성을 확인하기 위해 QUnit은 실패한 테스트 sessionStorage을 저장합니다. 다음 실행에서는 실패한 테스트를 먼저 실행하고 남은 후에는 테스트를 실행합니다. 이러한 접근 방식은 다른 테스트 실행 순서를 제공합니다. 테스트가 원자 적이지 않으면 실패합니다. 전체 테스트를 여러 번 실행 더 이해 jsfiddle

var truth = false; 

test("always fine test", function() { 
    truth = !truth; 
    ok(true, "Passed!"); 
    console.log("always fine test"); 
}); 

test("will toggle error test", function() { 
    truth = !truth; 
    ok(truth, "Passed!"); 
    console.log("will toggle error test"); 
}); 

를 들어

는 새로운 결과를 제공합니다.

동작을 피하고 나타나는 순서대로 테스트를 실행하십시오. QUnit.config.reorder = false을 사용할 수 있지만 권장하지 않습니다.