2011-01-06 3 views
25

Я ищу довольно недавнее приложение с открытым исходным кодом, которое использует Rspec 2 в качестве тестовой библиотеки. Я хотел бы посмотреть, как опытный разработчик правильно использует библиотеку, чтобы протестировать полный стек, так как я постоянно сомневаюсь в своих собственных знаниях (исходя из теста и отчасти из-за довольно скудной документации о последней версии Rspec, хотя он постоянно совершенствуется).Rails: хороший пример использования Rspec2? (Также: Cucumber, Pickle, Capybara)

Если проект будет использовать огурцы, соленья и/или Capybara вместе с Rspec 2, вы бы хотели, чтобы я прыгал от радости.

Любые указатели?

Cheers!

ответ

53

Мои 2 цента:

Использование Steak вместо огурца. Это RSpec по своей сути, это просто, и он выполняет эту работу.

https://github.com/cavalle/steak

Капибара позволяют использовать различные драйверы. Некоторые драйвера поддерживают JavaScript, работать с браузером, быстрее, медленнее и т.д. Используйте лучший драйвер для спецификации вы проверяете с помощью Swinger:

https://github.com/jeffkreeftmeijer/swinger

Я использую свой собственный форк Akephalos - водитель - который быстро, поддерживает javascript, UTF-8 (это то, что добавляет моя вилка) и не нуждается в внешнем браузере.

https://github.com/Nerian/akephalos2

Хорошая практика для RSpec является использование 'контекста'. Спросите меня, нужны ли вам разъяснения. Также обратите внимание на метод let. Он возвращает все, что возвращает блок. Он полезен для объявления ложного объекта внутри и использования их на образцах. ,

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 

Кроме того, книга: RSpec книга, прагматических Программисты очень хороший ресурс для начала себя о ключевых концепциях RSpec, Капибары, огурец и всей этом Behavior Driven Development проворной вещи :)

Редактировать:

Кроме того, я использую Machinist2 для светильников. https://github.com/notahat/machinist

Отлично работает. Лучше, чем Фабричная девушка.

Существует также Fabricator, который имеет отличный веб-сайт и очень удобный DSL.

https://github.com/paulelliott/fabrication

Вы можете использовать с Подделка Машинист, чтобы создавать интеллектуальные данные.

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 

Вы можете совместить это с задачей Thor для того, чтобы заполнить Вашу базу данных разработки, чтобы увидеть приложение, как конечный пользователь увидит его.

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 

Документация RSpec 2 имеет много примеров:

http://relishapp.com/rspec

Кроме того, это сообщение дать много других советов:

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

Другой пост с очень хорошим посоветуйте:

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

Оптимизация времени выполнения тестов:

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

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

+0

Благодаря кучу для ввода! В настоящее время я использую Factory Girl, но я думаю, что в ближайшем будущем я могу попробовать Machinist. – polarblau

+0

... Я читал о Стейке, и он, кажется, ближе к моему собственному «стилю» (hä?), Но я хотел бы использовать Cucumber один раз в одном полном проекте, чтобы получить лучшее впечатление. Я думал о покупке книги RSpec, спасибо за подсказку, я думаю, что я мог бы просто пойти на это! И я обязательно попробую «контекст». Еще раз спасибо. - Тем не менее, у кого-нибудь с открытым проектом я мог бы заглянуть? – polarblau

+1

Вы видите, одно действительно хорошее место для просмотра спецификаций RSpec2, сделанных мастерами, - это репозиторий RSpec2 git. :) Огурец: https://github.com/dchelimsky/rspec/tree/master/features и RSpec; https://github.com/dchelimsky/rspec/tree/master/spec – Nerian

 Смежные вопросы

  • Нет связанных вопросов^_^