일부 비동기 작업을 수행하는 라이브러리 (pouchDB)를 사용하고 있습니다. 일을 간단하게 유지하기 위해 비동기 작업과 관련된 "단위 테스트"(단위 테스트는 따옴표로 묶는 것이 일반적으로 문제라고 생각합니다. 하지만 다른 라이브러리를 사용하면 QUnit을 사용하는 것이 테스트를 작성하는 가장 적절한 방법입니다.비동기식 설정 및 해체 작업이있는 테스트를 작성하려면 어떻게해야합니까?
내 js 단위 테스트를 수행하기 위해 QUnit을 사용하고 있습니다. 두 가지 테스트가 있습니다. 나는 둘 중 하나를 실행하면 (다른 주석을 가지고있는 동안) 통과 할 것이라는 것을 안다. 두 항목을 함께 실행하면 두 번째 실행이 실패합니다. 두 번째 것이 완료되기 전에 셋업을 중지시키는 첫 번째 완료에 대한 분해 (teardown)가 완료되기 전에 두 번째 것이 실행중인 것처럼 보입니다.
module("pouchDB integration specs", {
setup: function(){
//some setup stuff
}
},
teardown: function(){
//some teardown stuff
});
}
});
asyncTest("test1", 1, function(){
test1MethodBeingTested();
document.addEventListener("completedTest1Stuff", function(){
deepEqual(newFriendSchedule, 'new', "Test 1 Looks Good'");
start();
});
});
});
asyncTest("test2", 2, function(){
stuffBeingTestedForTest2();
document.addEventListener("test 2 stuff done", function(){
deepEqual(expectedTest2Result, actualTest1Result, "test 2 looks good!");
start();
})
});
내가 Martin Fowler's take on testing asynchronous code에 모습을 가지고 있지만이 있었다에서 내 테이크 아웃 "당신이 설계해야
(사과는 들여 쓰기 쓰레기에 대한. SO의 편집자는 상관없이 내가 씨름 얼마나 날 좋아하지 않습니다) 본질적으로 비동기가 아니도록 코드를 작성하십시오. " 내가 수정하고 싶지 않은 라이브러리와의 통합을 테스트하고 있기 때문에 어떤 도움이되지 못합니까? (이전에이 문제를 다루어서는 안됩니다.)
하여 정리 방법은 비동기입니다 가능성은? QUnit을로드하기 위해 require를 사용할 때도이 문제를 보았습니다. – psquared
@psquared 예, 내 정리 (일명 teardown) 방법이 비동기입니다. 나는 그것을 명확하게하기 위해 질문을 갱신 할 것이다. 이 문제를 해결할 방법을 찾았습니까? – JoeyC