Подтвердить что ты не робот

Rails: хороший пример использования Rspec2? (Также: огурец, сопло, капибара)

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

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

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

Ура!

4b9b3361

Ответ 1

Мои 2 цента:

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

https://github.com/cavalle/steak

Capybara позволяет использовать разные драйверы. Некоторые драйверы поддерживают 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 Book, Pragmatic Programmers - очень хороший ресурс для того, чтобы инициировать себя в отношении основных концепций RSpec, Capybara, Cucumber и всего этого поведения, управляемого поведением:)

Edit:

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

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

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

https://github.com/paulelliott/fabrication

Вы можете использовать Machinist с Forgery для создания интеллектуальных данных.

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/