Мои 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/
Благодаря кучу для ввода! В настоящее время я использую Factory Girl, но я думаю, что в ближайшем будущем я могу попробовать Machinist. – polarblau
... Я читал о Стейке, и он, кажется, ближе к моему собственному «стилю» (hä?), Но я хотел бы использовать Cucumber один раз в одном полном проекте, чтобы получить лучшее впечатление. Я думал о покупке книги RSpec, спасибо за подсказку, я думаю, что я мог бы просто пойти на это! И я обязательно попробую «контекст». Еще раз спасибо. - Тем не менее, у кого-нибудь с открытым проектом я мог бы заглянуть? – polarblau
Вы видите, одно действительно хорошее место для просмотра спецификаций RSpec2, сделанных мастерами, - это репозиторий RSpec2 git. :) Огурец: https://github.com/dchelimsky/rspec/tree/master/features и RSpec; https://github.com/dchelimsky/rspec/tree/master/spec – Nerian