RSpec và Cucumber đều là các khung thử nghiệm. RSpec bao gồm Kiểm thử đơn vị truyền thống (có nghĩa là kiểm tra một lớp hoặc một phần của ứng dụng tách biệt với phần còn lại của ứng dụng. Vì vậy, mô hình của bạn thực hiện những gì mô hình của bạn phải làm, bộ điều khiển thực hiện những gì nó phải làm, v.v.).
Cả RSpec và Cucumber đều được sử dụng để Kiểm tra chấp nhận (Được gọi là ATDD, BDD, Đặc điểm kỹ thuật theo ví dụ, v.v. tùy thuộc vào người bạn yêu cầu). Đây là các Thử nghiệm tích hợp theo trường hợp kinh doanh, có nghĩa là chúng mô phỏng cách người dùng sử dụng ứng dụng và sử dụng ngăn xếp Rails đầy đủ, do đó các vấn đề về cách các phần khác nhau của ứng dụng của bạn hoạt động cùng nhau có thể được tìm thấy theo cách mà thử nghiệm đơn vị sẽ không tìm thấy.
Sự khác biệt chính giữa RSpec và Cucumber là yếu tố khả năng đọc của doanh nghiệp. Điểm hấp dẫn chính của Cucumber là thông số kỹ thuật (tính năng) tách biệt với mã thử nghiệm, vì vậy chủ sở hữu sản phẩm của bạn có thể cung cấp hoặc xem xét thông số kỹ thuật mà không cần phải tìm hiểu kỹ mã. Đây là các tệp .feature mà bạn tạo trong Cucumber. RSpec có một cơ chế tương tự, nhưng thay vào đó bạn mô tả một bước bằng khối Mô tả, Ngữ cảnh hoặc Khối chứa thông số nghiệp vụ và sau đó ngay lập tức có mã thực thi câu lệnh đó. Cách tiếp cận này dễ dàng hơn một chút đối với các nhà phát triển nhưng khó hơn một chút đối với những người không am hiểu kỹ thuật.
Sử dụng cái nào? Nếu bạn là nhà phát triển và chủ sở hữu sản phẩm duy nhất, thì tôi sẽ gắn bó với RSpec. các bước. Nếu bạn đang xây dựng điều này cho một khách hàng và họ đang thực hành liên quan đến Đặc điểm kỹ thuật, hãy sử dụng Cucumber cho Kiểm tra chấp nhận của bạn và sử dụng RSpec cho Kiểm tra đơn vị.
Chỉ để chứng minh sự khác biệt chính giữa hai:
Quả dưa chuột:
#articles.feature
Given an article exists called "Testing Demonstration"
When I visit the list of articles
Then I should see an article called "Testing Demonstration"
#article_steps.rb
Given /^an article exists called "(.+)"$/ do |title|
FactoryGirl.create(:article, title: title)
end
When /^I visit the list of articles$/ do
visit articles_path
end
Then /^I should see an article called "(.+)"$/ do |title|
page.should have_content title
end
Rspec
describe "Articles" do
let(:article) { FactoryGirl.create(:article) }
context "Index Page" do
before { visit articles_path }
it { page.should have_content article.title }
end
end
Loạt blog này rất tuyệt khi bắt đầu với RSpec.