2011-11-10 6 views
4

이제 Knockout JS 및 QUnit을 사용하여 내 녹아웃 뷰 모델의 단위 테스트를 시작했습니다. 내가 실행중인 문제는 내가 qunit 테스트 자바 스크립트 파일에 여러 테스트가 있고 내 View Model 정의가 포함 된 javascript 파일에 연결 한 경우 ... 한 번의 테스트에서 View Model에 대한 모든 변경 사항 테스트 모듈에서 다음 테스트를 시작할 때도 존재합니다. 나는 내 상태가 테스트 사이에 자동으로 지워지는 NUnit 환경을 사용했다.QUnit 테스트에서 KnockoutJS ViewModel 재설정

누군가가 가리킬 수있는 방법, 패턴 또는 예가 뷰 모델을 정의하는 가장 좋은 방법을 보여 주며 각 단위 테스트의 시작 상태를 재설정합니까?

답변

2

module의 두 번째 매개 변수 (수명주기)를 사용하고 있습니까? 그렇지 않은 경우,이 수준에서 같은보기 모델을 인스턴스화 할 수 있어야한다 : 나는 읽고 기억하는 바로는

module("foo", { 
    setup: function() { 
     this.model = instantiateModel(); 
    }, 
    tearDown: function() { 
     // execute reset here 
    }); 

test("bar", function() { 
    ok(this.model.hasSomething() !== null, "msg"); 
}); 

을 QUnit의 tets는 setuptearDown과 같은 범위에서 실행되므로 모든 회원에 정의 setup은 이후의 테스트에서 액세스 할 수 있습니다.

+0

OK ... 확실히 내가 찾고있는 것 같습니다. 전에 녹아웃을 사용한 적이 있습니까? 해당 instaniateModel 클래스에서 ko.applyBindings (viewModel)을 호출해야합니까? 그 일이 일어날 두 번째 전화가 생길까요? – Nick

+0

나는 knockout을 사용했지만 유닛 테스트를하지 않았습니다. 'instantateModel()'은 당신이 구현해야만하는 것입니다 (커스텀 셋업 단계들 중 하나) - 미안합니다. –

+4

예'setup'에서'ko.applyBindings'를 호출해야합니다. 'tearDown'에서'ko.cleanNode'를 사용하여 DOM 노드에 대한 바인딩을 제거해야합니다. –