How can I tell Rails to use RSpec instead of test-unit when creating a new Rails app?
Solution 1
The following should work:
at command line:
rails new MYAPP -T # The -T option tells rails not to include Test::Unit
in Gemfile:
gem 'rspec-rails'
at command line:
bundle install
rails g rspec:install
Solution 2
Create your new rails application as:
rails new <app_name> -T
Or remove your test
directory from your existing application:
rm -rf test/
Make an entry in your Gemfile:
gem 'rspec-rails'
From the command line install the gem
$ bundle install
From the command line install rspec into your application:
$ rails g rspec:install
Now your rails application uses RSpec instead of test-unit.
Solution 3
Once you created your rails application with:
rails new <app_name> -T # to exclude Test::Unit
Add the RSpec gem to your Gemfile in the following way:
group :development, :test do
gem "rspec-rails"
end
In Command line write:
bundle install # this will install the missing gems
Now you need to install RSpec by running:
rails generate rspec:install
This will generate the following files:
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
I strongly recommended to read through all spec_helper and rails_helper comments to get a good understanding of what each option does.
Once everything is set you can run all your tests with:
bundle exec rspec
You can read more about the recommended spec_helper and rails_helper configurations on https://kolosek.com/rails-rspec-setup.
Solution 4
I'm a new developer and I just made a rails flag (-rspec) to address OP's problem. It gets rid of Test::Unit and inserts the rails-rspec gem with a bash script. The script can be modified to help linux developers by automatically adding therubyracer gem or create custom flags and gemsets. (maybe specifically going to that gem line and deleting the comment)
Here's the gist && I hope this helps someone out there. https://gist.github.com/MTen/8310116
Related videos on Youtube
aarona
Updated on April 13, 2020Comments
-
aarona about 4 years
I have
test-unit
installed andrspec
installed (along with-core
,-expectations
,-mocks
and-rails
version 2.6.x). When I run the commandrails new foo
, it usestest-unit
to generate the test stub files instead ofrspec
.Is there an option where I can tell rails to use rspec to generate the tests instead?
-
aarona almost 13 yearsI think some of those steps are out of order, no? This looks like this would work though if done in the right order. Please edit your answer and I will mark it as accepted.
-
owl almost 13 yearsYou don't need the
generator.rb
initializer, this is taken care of by RSpec's railtie. All you need isrspec-rails
within thedevelopment
group of theGemfile
which is enough to require it for the generators. You also don't need to generate the app with-T
, you can delete thetest
dir and it will work. -
cczona over 11 years'bundle install' step was missing from that list. Added.
-
Deepak Lamichhane almost 11 yearsCan you edit the code from g.test_framework = :rspec to g.test_framework :rspec
-
JNN over 10 years@RyanBigg: with -T option we'll have
"rails/test_unit/railtie"
commented out inapplication.rb
-
februaryInk almost 9 yearsWhen you add the
rspec-rails
gem, it's important to put it under test and development, or the generators won't use RSpec even if you follow the above steps. -
sixty4bit about 8 years@februaryInk's comment above ^^ is golden