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
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.
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.
Đâ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"
- 1. Làm thế nào để tôi cho biết thành công và thất bại với màu sắc?
- 2. C#: Làm thế nào để vượt qua null cho một hàm mong đợi một ref?
- 3. Làm thế nào để thất bại trên
- 4. Cần bắt đầu công việc đại lý và đợi cho đến khi hoàn thành và thành công hay thất bại
- 5. làm thế nào để viết thất bại dự kiến?
- 6. Làm cách nào để vượt qua NSNumber với một phương thức mong đợi một bool?
- 7. git clone thất bại với "index-pack" không thành công?
- 8. Làm thế nào để hiển thị các bài kiểm tra của tôi vượt qua/thất bại trong Github?
- 9. AFNetworking AFHTTPClient các loại nội dung khác nhau cho sự thành công và thất bại
- 10. Đăng nhập SSH với mong đợi (1). Làm thế nào để thoát khỏi mong đợi và vẫn còn trong SSH?
- 11. Lệnh Hadoop Streaming Thất bại (Không thành công) bằng Python
- 12. TeamCity NUnit xây dựng bước thất bại mặc dù tất cả các bài kiểm tra vượt qua
- 13. gdb bước không hoạt động như mong đợi
- 14. Làm thế nào để vượt qua một ArrayList đến một phương thức mong đợi một vararg (Object ...)?
- 15. jQuery .submit() trigger thành công hay thất bại
- 16. Làm cho việc xây dựng Android jenkins thất bại nếu các thử nghiệm không thành công
- 17. Thất bại khi xây dựng maven-antrun-plugin thất bại
- 18. mong đợi kịch bản + làm thế nào để bỏ qua chuỗi nếu không xuất hiện
- 19. Karma: Thông báo hệ thống khi kiểm tra vượt qua hoặc thất bại
- 20. Làm cách nào để chạy trình cài đặt Windows và nhận giá trị thành công/thất bại trong PowerShell?
- 21. Làm thế nào tôi có thể thấy những gì capybara được tìm thấy trong một bước dưa chuột thất bại?
- 22. JMeter làm thế nào để không thất bại 500 lỗi máy chủ nội bộ
- 23. rails3 rails.js và jquery bắt thành công và thất bại của yêu cầu ajax
- 24. Cam kết qua travis ci thất bại
- 25. Đánh dấu thượng lưu Jenkins/Hudson là thất bại nếu công việc hạ lưu thất bại
- 26. Làm thế nào tôi có thể thất bại Maven xây dựng nếu exec: java mục tiêu không thành công?
- 27. MSTest ExpectedException thất bại
- 28. Làm thế nào để kiểm tra RSpec thất bại?
- 29. Làm thế nào để làm cho Hudson/Jenkins thất bại nếu ngưỡng Sonar bị vi phạm?
- 30. "rvm install ree" thất bại trên ubuntu: làm thế nào để có được vượt qua openssl và zlib dev tiêu đề yêu cầu?
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