2016-08-12 2 views
1

나는 내 앱에 삽입 된 별도의 라이브러리에서 약속을 테스트하려고합니다. 실행 방법 재스민에서 약속 테스트

function myFunc(input) { 
 
     return new Promise(function(resolve, reject) { 
 
      ··· 
 
      resolve(value); // success 
 
      ··· 
 
      reject(error); // failure 
 
     }); 
 
    };

이는 약속을 반환 내 기능입니다.

내가 심각 [테스트를 시작] 내 테스트를 통과이

describe('Service: myService', function() { 
 
    var $log; 
 

 
beforeEach(inject(function (_$log_) { 
 
    $log = _$log_; 
 
})); 
 

 
it('should get results', function() { 
 
    $log.log("start test"); 
 

 
    var self = this; 
 
    myFunc(input).then(function(response) { 
 
      $log.log("success"); 
 
      expect(response).toBe("response"); 
 
      done(); 
 
    }).catch(function(error) { 
 
      $log.log("fail"); 
 
      self.fail(error); 
 
      done(); 
 
    }); 
 
    $log.log("end test"); 
 
}); 
 
});

(예상되지 않음.) 내 로그에 유일처럼 자스민에서 테스트를 실행 사랑하고 약속이 완전히 무시 된 것처럼. 약속을 위해 $ q를 사용하지 않으므로 대부분의 재스민 팁 각도는 도움이되지 않습니다.

'그 다음'에 들어가는 방법에 대한 아이디어가 있습니까?

감사

답변

0

내가 잘못 여기있을 수 있지만, 여기에 비동기 프로세스를 테스트하려고하기 때문에이 가능성이 높습니다. 근본적으로 어떤 일이 일어나고 있는지는 함수를 호출한다는 것입니다.하지만 테스트가 계속 실행되기 전에 테스트가 끝나기 전에 테스트가 성공하는 이유는 테스트가 성공하는 이유입니다.

한 가지 방법은이 문제를 해결하는 것입니다.이 방법은 해킹과 비슷하지만 더 좋은 방법이있을 것입니다. 찾으면이 코드를 수정합니다.이 코드를 추가하는 것입니다.

describe("baseline test",function(){ 
    it("baseline",function(done){ 
     setTimeout(function(){ 
      expect(1).toEqual(1); 
      done(); 
     },1000);  
    }); 
}); 

는 본질적으로 무엇이 조각 그냥 비동기 1 초 동안 대기 시간 제한을 설정하는 일은 다시 전화 호출 테스트의 끝에서. 1 초가 충분하지 않으면 항상 1000 초를 늘릴 수 있습니다 (밀리 초 단위). 이것이 작동하지 않는다면, 약속이 반환 될 때까지 완료되지 않을 다른 테스트 스위트를 추가하는 방법을 고려해보십시오.

+0

감사합니다. 나는 이것을 시도했지만 현재 시간 초과 오류가 발생합니다. 스레드가 어떻게 든 사라질 것 같아요. 아직도 알아 내고있어. – Jade

관련 문제