rails plugin new <project_name> -T -d postgresql --dummy-path=spec/dummy --skip-turbolinks --skip-spring --mountable
-T
skips the creation of the test directory and the use ofTest::Unit
--dummy-path=spec/dummy
sets up your dummy app in a spec directory--skip-turbolinks
&--skip-spring
creates a project that does not use turbolinks or spring--mountable
creates a "mountable" and namespace-isolated engine.
- In Gemfile:
gem 'rspec-rails'
- user rspec in place of minitest (docs)gem 'capybara'
- act as a user navigating your site in tests (docs)gem 'factory_girl_rails'
- easily generate database objects without repetitive code in tests (docs)gem 'database_cleaner'
- clean your database between tests (docs)
- In project_name.gemspec
- Change
s.homepage
,s.summary
, ands.description
to the correct info
- Bundle and install (
bundle exec
orrails g
) where required, create additional required files
bundle
rails g rspec:install
mkdir spec/support
touch spec/support/factory_girl.rb
touch spec/support/factories.rb
touch spec/support/database_cleaner.rb
- Add config data
-
In
spec/rails_helper.rb
require 'capybara/rails'
- Uncomment
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
- Change
config.use_transactional_fixtures = true
to... = false
- Uncomment
-
In
spec/support/factory_girl.rb
RSpec.configure do |config| config.include FactoryGirl::Syntax::Methods end
-
In
spec/support/factories.rb
FactoryGirl.define do <factories for each model go here> end
-
In
spec/support/database_cleaner.rb
RSpec.configure do |config| config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end config.before(:each) do DatabaseCleaner.strategy = :transaction end config.before(:each, :js => true) do DatabaseCleaner.strategy = :truncation end config.before(:each) do DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end # Optional for formatting output of test suite runs (see comments) config.formatter = :documentation end
- In lib/project_name/engine.rb:
config.generators do |g|
g.test_framework :rspec
g.fixture_replacement :factory_girl, :dir => 'spec/support/factories'
end