약속을 사용하는 각도 팩토리 함수가 jasmine에서 오류를 던지고 있는지 테스트하는 방법

이반

내 기능은 다음과 같습니다.

var myFunc = function(){
   return functionReturningaPromise()
          .then(function(){
              //success, doesn't matter what happens here
          })
          .catch(function(err){
              //handle error here and then throw to handle higher
              throw new Error('Error in my function');
          })
}

이 함수 내에서 오류를 처리 한 다음 더 높은 수준에서 처리하기 위해 오류를 발생시키는 함수가 필요합니다. 하지만 재스민으로 테스트하는 방법을 모르겠습니다. 테스트 약속을 제어하는 ​​방법을 알고 있으며 기본 설정은 다음과 같습니다.

it('Should throw an error', inject(function(alert) {
    var instance = instanceFactory.createInstance(someData);
    var deferred = $q.defer();
    spyOn(someFactory, 'someMethod').and.returnValue(deferred.promise);

    //instance contains the throwing function above 

    instance.myFunc(otherData);

    deferred.reject({data: '12 - error'});
    $rootScope.$digest();

    expect(instance.myFunc).toThrow();

}));

분명히 재스민은 오류를 찾지 못했습니다. 이 경우 오류 발생을 테스트하는 방법

마이클 라디오 노프

$qnative throw에서 잘 작동하지 않는 경우 $qAPI를 사용 하여 프라 미스 체인 내에서 새 오류를 다시 던지거나 생성 해야합니다 . 읽어야 할 Q / A :

이 솔루션은 사용하는 것 return $q.reject('Error in my function')대신에 throw new Error('Error in my function');.

그러나 공개 된 질문은 그것을 어떻게 테스트 할 것인가입니다. 기본적으로 promise 체인을 사용 .catch()하고 테스트에 하나 더 추가 하여 오류를 확인할 수 있으며 테스트는 Jasmine Async API를 사용 합니다 .

it('should throw an error', function (done) {
// ----- use Jasmine async API -------^^^

    var instance = instanceFactory.createInstance(someData);
    var deferred = $q.defer();
    spyOn(someFactory, 'someMethod').and.returnValue(deferred.promise);

    // here we continue catching and check the error
    var promise = instance.myFunc(otherData);
    promise.catch(function (err) {
        expect(err).toBe('Error in my function');
        done();
    });

    deferred.reject({data: '12 - error'});
    $rootScope.$digest();
});

다음은 작동하는 샘플입니다 ( script.js사이드 바에서 파일 열기 ).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

컨트롤러의 함수가 아니라고 주장하는 오류를 던지는 Angular 팩토리 함수

분류에서Dev

jasmine을 통한 각도 테스트에서 location.reload ()를 피하고 테스트하는 방법

분류에서Dev

테이블이 컴팩트 스토리지를 사용하는지 확인하기 위해 Cassandra 3에서 CQL을 어떻게 사용할 수 있습니까?

분류에서Dev

Angular 8에서 Jasmine으로 약속을 테스트하기 위해 콜백 함수를 모의하는 방법

분류에서Dev

누군가 내가보고있는 내용과 듀얼 부팅 노트북에서 Ubuntu OS 용 스토리지를 확장하는 데 사용해야하는 방법과 내용을 이해하도록 도와 줄 수 있습니까?

분류에서Dev

각도기에서 오류를 던지는 multiCapabilities 함수

분류에서Dev

약속을 반환하는 Jasmine 단위 테스트 각도 서비스가 해결되지 않습니다.

분류에서Dev

각도기 / 자스민 테스트에서 약속을 기다리는 방법?

분류에서Dev

각도기 테스트를 사용하여 요소를 클릭 할 수 있는지 확인하는 방법

분류에서Dev

팩토리를 수신기로 사용하여 액터 값을 테스트하는 방법

분류에서Dev

MatTableDataSource를 사용하지 않고 재료 테이블에서 재료 페이지 매김을 수행하는 방법이 있습니까? 각도 10

분류에서Dev

스트림 API를 사용하는 방법을 리팩토링

분류에서Dev

Karma에서 Jasmine을 사용하여 각도 지시문에 모의 종속성을 삽입하는 방법

분류에서Dev

테스트를 위해 역 추적 알고리즘을 사용하여 마우스가 직사각형 미로에서 벗어날 수 있는지 여부

분류에서Dev

Julia가 던지고 싶은 오류 외에도 LoadError를 던지는 이유

분류에서Dev

Julia가 던지고 싶은 오류 외에도 LoadError를 던지는 이유

분류에서Dev

페이지 개체 팩토리에서 여러 ID를 사용하는 방법

분류에서Dev

C #에서 TextBox를 사용하는 동안 정수가 범위 내에 있는지 테스트하는 방법

분류에서Dev

ssis 패키지 단계에서 오류 처리를 테스트하지 못하도록 강제하는 방법

분류에서Dev

angularjs 팩토리에서 함수를 호출하는 방법

분류에서Dev

함수 내에서 이벤트 이미 터 구독을 트리거하는 방법. 각도 단위 테스트

분류에서Dev

진행하기 전에 함수가 값을 반환 할 때까지 각도를 기다리는 방법

분류에서Dev

http get을 사용하여 각도 서비스에 대한 Jasmine 테스트를 작성하는 방법은 무엇입니까?

분류에서Dev

각도기 테스트에서 약속을 반환하지 않는 메서드의 흐름을 제어하는 방법

분류에서Dev

유형을 유지하는 오브젝트 팩토리를 만드는 방법

분류에서Dev

각도기-e2e 테스트를 위해 Jasmine에서 태그를 사용하는 방법

분류에서Dev

MSAL.js를 사용하지 않고 웹 API와 각도 앱간에 Azure 액세스 토큰을 처리하는 방법

분류에서Dev

jquery를 사용하거나 사용하지 않고 지연된 각도 약속을 사용하는 올바른 방법은 무엇입니까?

분류에서Dev

for 루프에서 함수 호출을 시도하고 사용하지 않는 인수 오류가 발생 함

Related 관련 기사

  1. 1

    컨트롤러의 함수가 아니라고 주장하는 오류를 던지는 Angular 팩토리 함수

  2. 2

    jasmine을 통한 각도 테스트에서 location.reload ()를 피하고 테스트하는 방법

  3. 3

    테이블이 컴팩트 스토리지를 사용하는지 확인하기 위해 Cassandra 3에서 CQL을 어떻게 사용할 수 있습니까?

  4. 4

    Angular 8에서 Jasmine으로 약속을 테스트하기 위해 콜백 함수를 모의하는 방법

  5. 5

    누군가 내가보고있는 내용과 듀얼 부팅 노트북에서 Ubuntu OS 용 스토리지를 확장하는 데 사용해야하는 방법과 내용을 이해하도록 도와 줄 수 있습니까?

  6. 6

    각도기에서 오류를 던지는 multiCapabilities 함수

  7. 7

    약속을 반환하는 Jasmine 단위 테스트 각도 서비스가 해결되지 않습니다.

  8. 8

    각도기 / 자스민 테스트에서 약속을 기다리는 방법?

  9. 9

    각도기 테스트를 사용하여 요소를 클릭 할 수 있는지 확인하는 방법

  10. 10

    팩토리를 수신기로 사용하여 액터 값을 테스트하는 방법

  11. 11

    MatTableDataSource를 사용하지 않고 재료 테이블에서 재료 페이지 매김을 수행하는 방법이 있습니까? 각도 10

  12. 12

    스트림 API를 사용하는 방법을 리팩토링

  13. 13

    Karma에서 Jasmine을 사용하여 각도 지시문에 모의 종속성을 삽입하는 방법

  14. 14

    테스트를 위해 역 추적 알고리즘을 사용하여 마우스가 직사각형 미로에서 벗어날 수 있는지 여부

  15. 15

    Julia가 던지고 싶은 오류 외에도 LoadError를 던지는 이유

  16. 16

    Julia가 던지고 싶은 오류 외에도 LoadError를 던지는 이유

  17. 17

    페이지 개체 팩토리에서 여러 ID를 사용하는 방법

  18. 18

    C #에서 TextBox를 사용하는 동안 정수가 범위 내에 있는지 테스트하는 방법

  19. 19

    ssis 패키지 단계에서 오류 처리를 테스트하지 못하도록 강제하는 방법

  20. 20

    angularjs 팩토리에서 함수를 호출하는 방법

  21. 21

    함수 내에서 이벤트 이미 터 구독을 트리거하는 방법. 각도 단위 테스트

  22. 22

    진행하기 전에 함수가 값을 반환 할 때까지 각도를 기다리는 방법

  23. 23

    http get을 사용하여 각도 서비스에 대한 Jasmine 테스트를 작성하는 방법은 무엇입니까?

  24. 24

    각도기 테스트에서 약속을 반환하지 않는 메서드의 흐름을 제어하는 방법

  25. 25

    유형을 유지하는 오브젝트 팩토리를 만드는 방법

  26. 26

    각도기-e2e 테스트를 위해 Jasmine에서 태그를 사용하는 방법

  27. 27

    MSAL.js를 사용하지 않고 웹 API와 각도 앱간에 Azure 액세스 토큰을 처리하는 방법

  28. 28

    jquery를 사용하거나 사용하지 않고 지연된 각도 약속을 사용하는 올바른 방법은 무엇입니까?

  29. 29

    for 루프에서 함수 호출을 시도하고 사용하지 않는 인수 오류가 발생 함

뜨겁다태그

보관