2011-02-01 33 views
5

Chúng tôi muốn kiểm tra các định nghĩa bước của chúng tôi cho dưa chuột. Một điều chúng tôi muốn có thể kiểm tra là các thử nghiệm mà chúng tôi mong đợi thất bại thực sự không thành công. Để làm điều này, chúng tôi muốn viết kịch bản mà chúng tôi biết sẽ không thành công và thêm chúng vào bộ thử nghiệm của chúng tôi, nhưng thẻ hoặc biểu thị chúng để chúng "chuyển" nếu và chỉ khi chúng không thành công. Làm thế nào một trong những cách tiếp cận này?Làm thế nào để mong đợi bước không thành công và vượt qua sự thất bại trong Cucumber?

Trả lời

0

Bạn nên kiểm tra trạng thái phủ định. Một bước thất bại đơn giản là nghịch đảo của một bước đi qua. Vì vậy, hãy làm điều gì đó như:

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

Đó là cách tôi sẽ thử nghiệm để tìm lỗi. Bạn cũng có thể bắt ngoại lệ và như vậy, và xác minh rằng một khối không thực sự vứt rằng ngoại lệ

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

Bạn chỉ cần đảo ngược các bài kiểm tra trong các trường hợp thử nghiệm của bạn để kiểm tra cho kết quả âm tính, không kết quả tích cực.

+0

Mục đích ở đây không phải để kiểm tra là rằng nhà nước là không đúng sự thật, nó là để kiểm tra rằng các thử nghiệm không thành công khi nhà nước là không đúng sự thật. Nói cách khác, chúng tôi đang thử nghiệm các bước của mình, chứ không phải kiểm tra trạng thái. – kerkeslager

-1

Bạn chuyển công tắc -w vào lệnh Cucumber.

Nó sẽ xuất ra định dạng bình thường, tuy nhiên ở cuối, nó sẽ tóm tắt chi tiết xem tất cả các trường hợp thử nghiệm có thành công hay không và nếu có thì sẽ xác định cái nào.

0

Đây là một ví dụ khá phức tạp, nhưng kết quả cuối cùng là một phương pháp thực sự sạch sẽ để mong đợi các kịch bản dưa chuột thất bại. Đây chỉ là một vài thành phần nhỏ từ một dự án tôi đang làm việc. Lý do tạo người dùng có dữ liệu bị thiếu là do có một số trình xác thực trong mô hình người dùng của tôi. Tất cả mã nguồn có thể được tìm thấy here.

tính năng/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 

tính năng/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 

tính năng/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" 
Các vấn đề liên quan