2011-01-06 29 views
25

Tôi đang tìm một ứng dụng mã nguồn mở khá gần đây sử dụng Rspec 2 làm thư viện kiểm tra. Tôi muốn xem cách một nhà phát triển có kinh nghiệm sử dụng thư viện đúng cách để kiểm tra toàn bộ ngăn xếp, vì tôi liên tục nghi ngờ về kiến ​​thức của riêng mình (đến từ testunit và một phần là do tài liệu khá thưa thớt về bản phát hành Rspec mới nhất, mặc dù nó không ngừng được cải thiện).Đường ray: Sử dụng ví dụ Rspec2 tốt? (Ngoài ra: Cucumber, Pickle, Capybara)

Nếu dự án sẽ sử dụng Cucumber, Pickle và/hoặc Capybara cùng với Rspec 2, bạn sẽ yêu cầu tôi nhảy cho vui.

Mọi con trỏ?

Chúc mừng!

Trả lời

53

2 xu của tôi:

Sử dụng Bít tết thay vì Dưa chuột. Nó RSpec ở cốt lõi của nó, nó là đơn giản và nó thực hiện công việc.

https://github.com/cavalle/steak

Capybara cho phép bạn sử dụng các trình điều khiển khác nhau. Một số trình điều khiển hỗ trợ javascript, chạy với một trình duyệt, nhanh hơn, chậm hơn, vv Sử dụng trình điều khiển tốt nhất cho spec bạn đang thử nghiệm sử dụng Swinger:

https://github.com/jeffkreeftmeijer/swinger

tôi sử dụng nĩa riêng của tôi về Akephalos - một tài xế - mà là nhanh, hỗ trợ javascript, UTF-8 (đó là những gì mà ngã ba của tôi thêm) và không cần trình duyệt bên ngoài.

https://github.com/Nerian/akephalos2

Một thực hành tốt cho RSpec là sử dụng 'Bối cảnh'. Hãy hỏi tôi nếu bạn cần làm rõ. Ngoài ra, hãy lưu ý phương thức cho phương thức. Nó trả về bất kỳ khối nào trả về. Nó rất hữu ích cho việc khai báo giả một đối tượng bên trong và sử dụng chúng trên các mẫu. .

feature "Course" do 

    let(:school) {School.make!} 

    context "Loged in" do 
    before(:each) do 
     switch_to_subdomain(school) 
    end 

    context "In the new course form" do 
     before(:each) do 
     click_link("Courses") 
     click_link("New course") 
     end 

     scenario "New course" do    
     end 

     scenario "A Course without name should not be accepted" do 
     end 

     scenario "A new course should not be created if there is another one with the same name in the same school" do 
     end 
    end 
    end 
end 

Ngoài ra, cuốn sách: Các RSpec Book, các lập trình viên Pragmatic là một nguồn lực rất tốt để bắt đầu bản thân về các khái niệm cốt lõi đằng sau RSpec, Capybara, dưa chuột và tất cả Driven Development Hành vi điều nhanh nhẹn này :)

Chỉnh sửa:

Ngoài ra, tôi sử dụng Machinist2 cho đồ đạc. https://github.com/notahat/machinist

Hoạt động tốt. Tốt hơn cô gái nhà máy.

Ngoài ra còn có Nhà chế tạo, có trang web tuyệt vời và DSL rất có thể sử dụng.

https://github.com/paulelliott/fabrication

Bạn có thể sử dụng Machinist với giả mạo nhằm tạo dữ liệu thông minh.

https://github.com/sevenwire/forgery

School.blueprint do 
    name { "Pablo de olavide"} 
end 

Student.blueprint do 
    first_name { Forgery::Name.first_name} 
    last_name { Forgery::Name.last_name } 
    school { School.make! } 
end 

Bạn có thể kết hợp này với một nhiệm vụ Thor để cư bạn cơ sở dữ liệu phát triển, để xem các ứng dụng như là người dùng cuối cùng sẽ nhìn thấy nó.

def populate   
    require File.expand_path('config/environment.rb') 
    require File.expand_path('spec/support/blueprints.rb')   
    drop 
    puts "populating database" 
    1.times do |num| 
     school = School.make! 
     50.times do 
     Student.make!(:school => school) 

     end            
    5.times do   
     Course.make!(:school => school)   
     Professor.make!(:school => school)     
     end    
    end 
end 

Các tài liệu của RSpec 2 có rất nhiều ví dụ:

http://relishapp.com/rspec

Ngoài ra, đây bài viết cung cấp cho nhiều lời khuyên khác:

http://eggsonbread.com/2010/03/28/my-rspec-best-practices-and-tips/

Một bài với tư vấn rất tốt:

http://flux88.com/2011/05/dry-up-your-rspec-files-with-subject-let-blocks/

Tối ưu hóa thời gian thực hiện các xét nghiệm:

http://blog.leshill.org/blog/2011/10/23/fast-specs.html

http://jeffkreeftmeijer.com/2011/spec-helpers-bundler-setup-faster-rails-test-suites/

+0

Cảm ơn bó cho đầu vào! Tôi hiện đang sử dụng Factory Girl nhưng tôi nghĩ tôi có thể thử Machinist trong tương lai gần. – polarblau

+0

... Tôi đã đọc về Steak và nó chắc chắn có vẻ gần gũi hơn với "phong cách" của riêng tôi (hä?), Nhưng tôi muốn sử dụng Cucumber một lần trên một dự án đầy đủ để có được một ấn tượng tốt hơn. Tôi cũng đã nghĩ đến việc mua cuốn sách RSpec, nhờ vào gợi ý, tôi nghĩ tôi có thể chỉ cần đi mua nó! Và tôi chắc chắn sẽ thử "ngữ cảnh". Cảm ơn một lần nữa. - Tuy nhiên bất cứ ai với một số dự án mở tôi có thể có một peek tại? – polarblau

+1

Bạn thấy đấy, một nơi thực sự tốt để xem thông số RSpec2 được thực hiện bởi các bậc thầy là kho lưu trữ git RSpec2 chính nó :) Dưa chuột: https://github.com/dchelimsky/rspec/tree/master/features và RSpec; https://github.com/dchelimsky/rspec/tree/master/spec – Nerian

Các vấn đề liên quan