suy nghĩ của dưa chuột như kiểm tra toàn bộ ứng dụng của bạn, từ bên ngoài vào, nơi RSpec là đơn vị thử nghiệm các module cụ thể. Bạn bắt đầu bằng cách xác định những hành vi nào bạn muốn ứng dụng của bạn có trong Cucumber sau đó thả xuống RSpec và mô tả các lớp và mô-đun làm cho hành vi đó hoạt động.
Tôi mất một thời gian để có được nó nhưng tôi thấy Cucumber thực sự tốt cho việc mô tả rộng rãi các tính năng bạn muốn ứng dụng của bạn làm và RSpec thực sự mô tả cách thực sự thực hiện.
Vì vậy, bạn sẽ nói trong câu chuyện dưa chuột của mình về loại tính năng bạn muốn và viết các bước siêu đơn giản để cung cấp đầu vào và xem đầu ra. Sau đó, bạn thả xuống RSpec và viết thông số kỹ thuật về cách nó thực sự nên làm điều đó.
Giả sử tính năng của bạn là khả năng tìm kiếm tên người dùng trên trang web.Bạn có thể viết một tính năng dưa chuột và người đầu tiên (và duy nhất đầu tiên) kịch bản như thế này:
Feature: Search users
In order to find people with similar interests as myself
As a user
I want to search for people
Scenario: Search for similar hobbies
Given there is a search page
And there is a list of hobbies
And one of the hobbies is "full contact ironing"
When I select "full contact ironing"
And press search
Then a list of users with the hobby "full contact ironing" are shown
Bạn chạy dưa chuột, nó sẽ cho bạn biết các bước bạn đang bỏ lỡ, bạn sao chép những người và tạo ra các bước đơn giản để kiểm tra cho công cụ này nhưng không viết bất kỳ mã nào.
Khi bạn đã hoàn tất với các định nghĩa bước, bạn thả xuống RSpec và bắt đầu viết thông số kỹ thuật về cách bạn muốn tính năng này hoạt động. (Dưa chuột tất nhiên nên không)
describe "SearchController" do
it "should respond to searches" do
sc = SearchController.new
sc.should respond_to(:search)
end
end
Bạn chạy RSpec và xem nó thất bại sau đó đi ra và viết mã của bạn:
class SearchController
def search
end
end
Vậy là xong. Bây giờ chạy thử nghiệm của bạn một lần nữa. Nó sẽ vượt qua để bắt đầu nhận được cụ thể hơn và bắt đầu mô tả cách bạn sẽ thực sự sử dụng tính năng tìm kiếm. Tôi không muốn nhận được quá sâu vào nó, tôi chỉ muốn cung cấp cho bạn ý tưởng rằng bạn mô tả những gì bạn muốn trong dưa chuột sau đó mô tả như thế nào nó thực sự nên làm việc trong RSpec. Tất nhiên bạn có thể làm mọi thứ trong Cucumber hoặc mọi thứ trong RSpec nhưng tôi đã thực sự tìm thấy Cucumber giúp tôi nói theo những cách rất đơn giản những gì tôi muốn ở đâu nếu tôi cố gắng làm điều đó trong RSpec tôi bị sa lầy trong các chi tiết. Nếu tôi sử dụng Cucumber đầu tiên để mô tả các tính năng cơ bản tôi muốn và tại sao sau đó tôi có thể thả vào RSpec và nói làm thế nào tôi muốn các tính năng để thực sự làm việc.
Đôi khi, đôi khi sẽ có đôi khi các thử nghiệm của bạn không phải là DRY, nhưng nếu bạn cho rằng đó là vấn đề chi tiết, điều đó có thể không làm bạn phiền lòng nhiều. Tôi đã làm rất nhiều nỗ lực sao chép lúc đầu cho đến khi tôi nhận ra tôi chỉ nên nói chung những gì tôi muốn ở Cucumber sau đó nói cụ thể những gì tôi muốn trong RSpec.
Đây chỉ là ý tưởng của một người mới về cách sử dụng các công cụ nhưng dường như nó vẫn hoạt động tốt cho tôi. Tôi có thể đã cho bạn một ví dụ khủng khiếp nhưng tôi chỉ cố gắng để có được điểm trên các chi tiết chung để cụ thể chi tiết tôi đã tìm thấy hữu ích khi sử dụng các công cụ.
Tôi hoàn toàn đồng ý, đây cũng là trải nghiệm của tôi. –