2011-02-01 3 views
5

우리는 오이에 대한 단계 정의를 테스트하려고합니다. 우리가 점검 할 수 있기를 원하는 것은 실제로 실패 할 것으로 예상되는 테스트가 실패한다는 것입니다. 이를 위해 우리는 실패 할 것으로 예상되는 시나리오를 작성하여 테스트 스위트에 추가하려고하지만, 실패 할 경우에만 "통과"할 수 있도록 태그를 붙이거나 표시합니다. 어떻게 접근 할 것인가?오이에서 실패한 단계와 실패를 예상하는 방법은 무엇입니까?

답변

0

음수 상태를 테스트해야합니다. 실패 단계는 단순히 통과 단계의 역입니다. 따라서 다음과 같이하십시오.

Then /i should not be true/ do 
    some_value.should_not be_true 
end 

이렇게하면 오류가 있는지 테스트 할 수 있습니다. 당신은 또한 예외 등을 잡아와 블록 실제로 당신은 단순히 부정적인 결과가 아니라 긍정적 인 결과를 테스트하는 테스트 케이스의 테스트를 반대하는 예외를

lambda do 
    something_that_horks 
end.should raise_error(Specific::Error) 

을 던져 않는 것을 확인할 수 있습니다.

+0

상태가 사실이 아니라면 테스트가 실패 함을 테스트하는 것입니다. 즉, 우리는 테스트 단계가 아니라 단계를 테스트하고 있습니다. – kerkeslager

-1

-w 스위치를 오이 (Cucumber) 명령에 전달합니다.

일반 형식을 출력하지만 모든 테스트 사례가 실패했는지 여부를 자세히 설명하는 요약을 제공하고 전달 된 테스트 사례가 어느 것인지를 지정합니다.

0

이것은 꽤 복잡한 예이지만 최종 결과는 오이 시나리오가 실패 할 것으로 예상하는 정말 깨끗한 방법입니다. 이것들은 제가 작업하고있는 프로젝트의 작은 구성 요소들입니다. 누락 된 데이터가있는 사용자를 만드는 이유는 내 사용자 모델에 유효성 검사기가 있기 때문입니다. 모든 소스 코드는 here입니다.

기능/step_definitions/before_step.rb

Before("[email protected]") do 
    def assert_cucumber(assersion, msg = "an error was thrown") 
    assert(assersion == true, msg) 
    end 
end 

Before("@fails") do 
    def assert_cucumber(assersion, msg = "an error was thrown") 
    assert(assersion == false, msg) 
    end 
end 

기능/step_definitions/user_step.rb 여기 목적이 아닌 테스트하는 것입니다

Given /^a user with$/ do |params| 
    params = params.rows_hash 
    unless User.find_by({username: params[:username]}) 
    assert_cucumber(User.new(params).save, "could not create user") 
    end 
end 

기능/user.feature

Scenario: check if userers exsist 
    Given a user with 
    | username | johnsmith    | 
    | email | [email protected] | 
    | password | password    | 
    Then a user with username "johnsmith" 

@fails 
Scenario: create user with missing data 
    Given a user with 
    | username | johndoe | 
    Then a user with username "johndoe" 
관련 문제