Jasmine 2의 새로운 done()
콜백을 사용하여 비동기 적으로 설정된 값을 테스트하려고합니다.재스민 비동기 테스트
나는 기반으로 한 재스민 자신의 문서에서 제공하는 예 (http://jasmine.github.io/2.0/upgrading.html#section-Asynchronous_Specs) 후 내 테스트 :
it('can set a flag after a delay', function(done) {
var flag = false,
setFlag = function() {
//set the flag after a delay
setTimeout(function() {
flag = true;
done();
}, 100);
};
setFlag();
expect(flag).toBe(true);
});
내가 "진실하게 거짓 예상"결과를 얻고, 그래서 그것의 같은데요 플래그의 값을 검사하기 전에 done() 콜백이 호출되기를 기다리지 않습니다.
누구나이 테스트가 실패한 이유를 알고 있습니까?
감사합니다.
아하겠습니다. 나는 Jasmine 2가 done() 콜백을 기다려야 하는지를보기 위해 expect()에 여분의 권한을 주길 바랬다. 그것은 done()이 다음 테스트로 넘어 가기 전에 호출 될 때까지 기다리라고 지시합니다. 권리? – corbin
Sinon.js는 매우 멋지게 보입니다. 나는 Jasmine.tick을 보았고, setTimeouts도 모의 할 수있는 것처럼 보였다. http://jasmine.github.io/2.0/introduction.html#section-Mocking_the_JavaScript_Timeout_Functions – corbin
@corbin 맞다. 저는이 프레임 워크가 같은 접근법을 지원하기 때문에 모카 테스트에서 사용했습니다. 나의 비동기적인 것들을 위해, 나는 모조 테스트 주자에게 직접 돌아갈 수있는 가짜 타이머들 (나는 며칠 전에 만났다!)과'Promise'를 사용한다. 즉,'done'을 호출 할 필요가 없다는 것을 의미합니다! 나는 카르마가 같은 방식으로 행동하는지 잘 모르겠다. –