2014-03-04 2 views
4

일부 통합 테스트에는 모카를 사용하고 많은 테스트 세트가 있습니다. 모두 각 세트마다 초기화 테스트의 종류가 있습니다. 그러한 테스트가 실패하면 나머지 세트는 전혀 실행되지 않아야합니다. 왜냐하면 모든 세트가 확실히 실패하기 때문입니다. 코드/환경의 일부가 올바른 결과를 보장하지 않는 일부 도구에 의해 생성되므로 이러한 초기화 테스트를 피할 수는 없습니다.조건부 모카 테스트

모카를 사용하여 구현할 수 있습니까? (가) before 또는 beforeEach 테스트가 실패에 의존하는 경우

describe("foo", function() { 
    describe("first", function() { 
     before(function() { 
      // Stuff to be performed before all tests in the current `describe`. 
     }); 

     beforeEach(function() { 
      // Stuff to perform once per test, before the test. 
     }); 

     it("blah", ... 
     // etc... 
    }); 

    describe("second", function() { 
     before(function() { 
      // Stuff to be performed before all tests in the current `describe`. 
     }); 

     beforeEach(function() { 
      // Stuff to perform once per test, before the test. 
     }); 

     it("blah", ... 
     // etc... 
    }); 
}); 

다음 BDD 인터페이스를 사용

답변

1

, 모카와 함께이 작업을 수행하는 일반적인 방법은 before 또는 beforeEach에 테스트 환경을 설정 아무것도 넣어하는 것입니다 , 테스트가 실행되지 않습니다. 그것에 의존하지 않는 다른 테스트는 여전히 실행됩니다. 그래서 콜백, second라는 describe의 테스트는 전혀 영향을받지 않습니다 실패 및 실행됩니다 describe 이름 firstbefore에 전달하면 위의 예에서, 자신의 beforebeforeEach 콜백이 실패하지 않는 제공.

이외에도 모카는 이라는 독립적 인 테스트를 실행하도록 설계되었습니다. 따라서 하나의 it이 실패하면 나머지는 계속 실행됩니다.

1

나는 기본적으로 당신이 그들 중 하나 나누기, 따라서 피할 수없는 실패의 폭포를 피하는 경우 제품군을 중단됩니다 it() (step()이라고 함) s와 모카의 "체인"을 작성할 수 mocha-steps을 발견, 나는 pull request 8마르크 이후 발견 보류중인 단계와 보조품. 그래서 다음과 같이 쓸 수 있습니다 :

describe("businessCode()", function() { 
    step("should be not null", function() { 
    assert(businessCode() != null) 
    }); 
    step("should be a number", function() { 
    assert(typeof businessCode() === 'number'); 
    }); 
    step("should be greater than 10", function() { 
    assert(businessCode() > 10); 
    }); 
    describe("thingThatCallsBusinessCode()", function() { 
    step("should be greater than 10", function() { 
     assert(thingThatCallsBusinessCode() != null); 
    }); 
    }); 
}); 

businessCode()이 부울을 반환하면 should be a number 테스트 만 실패합니다. 후속 항목 (및 하위 메뉴는 보류 중으로 표시됩니다).

관련 문제