내 단위 테스트가 어떤 이유로 든 then
함수를 실행하지 않습니다. 다음은 테스트 코드입니다. 나는 '바벨 - polyfill'를 사용하려고했습니다Promise. 그럼 Karma + Jasmine + PhantomJs를 사용할 때 트리거하지 않습니까?
describe("Basic promise test",() => {
it("should trigger .then function",() => {
var mock = jasmine.createSpy('some method');
var promise = new Promise((resolve, reject)=> {
console.log("inside Promise");
resolve('something');
console.log("done!");
});
promise.then(mock);
promise.then(function() { //neither works!
mock();
console.log("resolved"); //code does reach here but only after test fails
});
expect(mock).toHaveBeenCalled();
});
});
, 아무 소용이 'ES6-약속'과 '약속 - polyfill'. 내가 도대체 뭘 잘못하고있는 겁니까? 이것에 대한
Jsfiddle는 : https://jsfiddle.net/L53zxe39/
약속은 * 비동기 적으로 * 해결되므로 재스민의 비동기 테스트 기능을 사용해야합니다. [이 기사] (http://www.htmlgoodies.com/beyond/javascript/test-asynchronous-methods-using-the-jasmine-runs-and-waitfor-methods.html#fbid=Pr4UoAyeYCM) 및 [this SO 대답] (http://stackoverflow.com/a/16401978/157247),'runs'와'waitsFor'를 사용합니다. 나는 대답으로 게시 할 것이지만 재스민에 대해서는 아무 것도 모른다. 아마도 '실행'과 '기다리는 것'보다 약속 테스트에 더 구체적인 것이있을 것이다. –
@ T.J.Crowder 여기 jsfiddle : https://jsfiddle.net/L53zxe39/를 참조하십시오. 나는 이미'waitsFor'를 사용해 보았지만 Jasmine 2.0을 사용하고 있기 때문에 오류가 발생합니다 (제거했다고 생각합니다). – supersan
그래, 그 이유는 대답을 게시하지 않았기 때문에 jasmine을 모른다는 것입니다. , 기사의 나이를 말할 수 없었고, 내가 찾은 대답은 2013 년부터였습니다. 근본적으로 문제는 해상도가 비동기이므로 재스민은이를 알아야합니다. 자스민 문서에서 약속 기반 API를 테스트하는 현재 방법을 살펴보십시오. –