创建新的Rails应用程序时,如何告诉Rails使用RSpec而不是测试单元?


152

我已经test-unit安装和rspec安装(沿-core-expectations-mocks-rails版本2.6.x的)。当我运行命令时rails new foo,它test-unit用来生成测试存根文件而不是rspec

有没有可以告诉Rails使用rspec生成测试的选项?

Answers:


262

以下应该工作:

在命令行:

rails new MYAPP -T # The -T option tells rails not to include Test::Unit

在Gemfile中:

gem 'rspec-rails'

在命令行:

bundle install
rails g rspec:install

我认为其中一些步骤不正常,不是吗?尽管如果以正确的顺序完成,这似乎可以正常工作。请修改您的答案,我将其标记为已接受。
aarona 2011年

60
您不需要generator.rb初始化程序,这由RSpec的railtie处理。所有你需要的是rspec-rails在中development组的Gemfile这足以需要它的发电机。您也无需使用生成应用程序-T,则可以删除该test目录,并且该目录将起作用。
Ryan Bigg

1
您可以将代码从g.test_framework =:rspec修改为g.test_framework:rspec
Deepak Lamichhane

8
@RyanBigg:使用-T选项,我们将"rails/test_unit/railtie"application.rb
Giang Nguyen

13
添加rspec-rails宝石时,对它进行测试开发很重要,否则即使遵循上述步骤,生成器也不会使用RSpec。
februaryInk

73

创建新的Rails应用程序,方法如下:

rails new <app_name> -T

test从现有应用程序中删除目录:

rm -rf test/

在您的Gemfile中输入:

gem 'rspec-rails'

从命令行安装gem

$ bundle install

从命令行将rspec安装到您的应用程序中:

$ rails g rspec:install

现在您的rails应用程序使用RSpec而不是测试单元。


2
该列表中缺少“捆绑安装”步骤。添加。
cczona 2012年

6

使用以下方法创建rails应用程序后:

rails new <app_name> -T  # to exclude Test::Unit

通过以下方式将RSpec gem添加到您的Gemfile中:

group :development, :test do
  gem "rspec-rails"
end

在命令行中输入:

bundle install  # this will install the missing gems

现在,您需要运行以下命令来安装RSpec:

rails generate rspec:install

这将生成以下文件:

create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

我强烈建议您通读所有spec_helper和rails_helper注释,以更好地了解每个选项的作用。

设置完所有内容后,您可以使用以下命令运行所有测试:

bundle exec rspec

您可以在https://kolosek.com/rails-rspec-setup上阅读有关建议的spec_helper和rails_helper配置的更多信息。


4

我是一名新开发人员,我刚刚制作了一个rails标志(-rspec)来解决OP的问题。它摆脱了Test :: Unit并使用bash脚本插入rails-rspec gem。可通过自动添加therubyracer gem或创建自定义标志和gemset来修改脚本,以帮助linux开发人员。(也许专门转到该宝石行并删除评论)

这是要点&&希望对您有所帮助。 https://gist.github.com/MTen/8310116


0

使用railsCLI 没有本机方法。生成一个没有test-unit以下内容的新项目:

rails new rails-app --skip-test

然后按照rspec说明将其集成到新的Rails应用程序中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.