2012-03-01 3 views
1

필요한 모든 종속성이 성공적으로 실행되지 않은 한 예를 실행하는 것입니다.rspec 예제 간의 종속성을 설정하는 방법은 무엇입니까?

즉 :

describe group_example do 
    it example_1 do 
     #### 
    end 
    it example_2 do 
     #### 
    end 
    it example_3 do 
     #### 
    end 

    example_4 should not run unless example_1, example_2 & example_3 
    Returns Sucess else return NOT RUN 
end 

당신은 그것을 수행하는 방법을 알려 주시겠습니까?

감사합니다.

감사합니다, Nouha이 당신이 당신의 스펙을 재구성 할 필요가 저에게 제안

+0

사양/테스트는 독립적이어야하며 주문에 의존하지 말고 그에 따라 사양을 설계하십시오. –

답변

4

- 대신 다른 사양의 성공 또는 실패에 의존하는 사양의 이전 제품군의 실행, 원하는 조건을 구성하는 명시 적으로 고려 각 사양 으로 테스트하십시오. 그것이 RSpec이 before 메소드를 제공하는 이유입니다. 상황이 진전됨에 따라 애플리케이션 코드를 실제로 테스트하지 않고 테스트 스위트의 동작을 테스트하고있다.

이 경우에는 4 단계에서 테스트 1, 2 및 3이 성공한 것처럼 응용 프로그램을 설정 한 다음 4 단계의 테스트를 실행하십시오. 가능한 한 테스트중인 코드를 격리하는 것이 좋습니다 , 아마도 당신이 그것을 도울 수 있다면 테스트 들간의 의존성을 초래하지 않을 것입니다.

1

@D_Bye가 지적했듯이, before를 사용하여 예제 그룹의 전제 조건을 설정하고 검증 할 수 있으며 예제를 중첩 할 수 있습니다.

describe "group example" do 
    it "example 1" do 
    #### 
    end 

    it "example 2" do 
    #### 
    end 

    it "example 3" do 
    #### 
    end 

    context "with preconditions" do 
    before(:each) do 
     # Establish the same preconditions as tested by examples 
     # 1, 2, 3, or mark examples in this context as pending. 
     begin 
     #### 
     raise "foo" 
     rescue RuntimeError => e 
     pending "preconditions not met: #{e.message}" 
     end 
    end 

    it "example 4" do 
     #### 
    end 
    end 
end 

또한 filtering (예를 들어, 설치된 소프트웨어에 따라 다름)를 실행할 수 있습니다 만 예제를 실행 할 수 있습니다.

+1

뭔가를 제안하지 않는 인터넷의 첫 번째 대답은 사양 구성에있어 잘못된 것입니다. 감사! –

관련 문제