2017-12-18 16 views
3
실패 처리하는 방법을

jasmine2 : beforeAll

var testUserId = null; 

describe("user test", function() { 
    beforeAll(function(done) { 
    createTestUser(). 
     .then(function(userId){testUserId = userId}) 
     .then(done) 
     .catch(done.fail); 

    it("should do stuff with the test user", function(done) { 
    // bla bla 
    }); 

    afterAll(function(done) { 
    deleteTestUser(testUserId). 
     .then(done) 
     .catch(done.fail); 
    }); 

}) 

createTestUser 및 deleteTestUser 반환 약속처럼 내 jasmine2/각도기 테스트 모습. 문제가 발생하면 오류 메시지와 함께 거부됩니다. 이제 문제는 beforeAll에서 오류가 발생해도 테스트가 시작된다는 것입니다. 그리고 내가 얻을

많은 테스트가있는 경우 모두 수행하려고 시도하고 매우 잘못된 오류 메시지와 함께 실패합니다. beforeAll 함수가 실패하면 테스트를 실행하지 못하게 할 수 있습니까?

Thx!

("재스민 코어": "2.8.0", "각도기": "5.2.1")


편집 :

정확히 아니다 I가 있지만에서 요청이 있었는지

var testUserId = null; 
describe("user test", function() { 
    beforeAll(function(done) { 
    createTestUser(). 
     .then(function(userId){testUserId = userId}) 
     .then(done) 
     .catch(done.fail("test user could not be created")); 

    it("should do stuff with the test user", function(done) { 
    if (testUserId) { 
     // bla bla 
    } else { 
     done(); 
    }); 

나는 적어도만을 올바른 오류 메시지 ("테스트 사용자가 만들 수 없습니다")를 얻을이 방법과 아닌 사람 : 적어도 나는 메시지는 다음과 같이 닫 오류의 양을 유지하기 위해 해결책을 발견 충족되지 않은 기대치는 "// bla b 라 "(당연히 나는 각각 에 대해 하나를 얻는다. 그러나). 나는 또한 if-condition을 매번 작성할 필요가 없도록 function-factory에 함수를 래핑했습니다. 관심에도 불구하고 내가 이해에서

+0

왜 createTestUser'가 생성하는'하는 의존성을 조롱되지는 ? 의존성이 실패했기 때문에 테스트가 실패하지 않아야합니다. 자신을 격리 시키십시오! –

+0

그게 전부입니다. 단지 그것이 나에 의해 만들어지지 않은 아키텍처에서 너무 큰 변화를 의미한다고 말할 수 있습니다. realz에는 testuser가 생성되었을뿐만 아니라 많은 다른 것들이 있지만, 실제 데이터베이스와 물건을 가진 백엔드를 사용하면 잘못 될 수 있습니다. 예, 예, 알고 있습니다 .. – Paflow

+0

그러면 x-y 문제가있는 것 같습니다. 당신은 당신의 시험에있는 항목들로 무엇이든 할 수 있습니다. –

답변

4

, jasmine does not support that :

은 사양 실행 (이 문제를)의 중간에 밖으로 건너 뛰기는 복잡한 조금 더 오류의 유형에 따라 때문에, 재스민 아마 은 여전히 ​​다음 사양에 대한 상태를 정리하기 위해 afterEach (또는 afterAll에 따라 다름)를 실행해야합니다. 그러면 QueueRunner가 에 어떤 기능이 있는지 알려주고 설정 및 해제가 필요하며 에는 호출 할 함수 목록이 없습니다.

하나의 옵션은 jasmine-fail-fast 또는 protractor-jasmine2-fail-whale 같은 타사 라이브러리 중 하나를 사용하여 수행 할 수있는 "실패 빠른"옵션을 사용하는 것입니다.

이 있습니다하지만 다른 해결 방법은 it() 기능의 이전 실패가 발생했을 경우 수동으로 확인 같은 :

+0

두 플러그인이 전체 테스트 프로세스를 한 번 실패하거나 현재 설명 블록 (원하는 경우)에서만 강제로 종료하도록 수정합니까? – Paflow

+0

@Paflow 예, 불행히도 전체 테스트 실행이 중지됩니다. 일종의 해결 방법이 대부분입니다. – alecxe