Ruby on Rails:从test_unit切换到rspec

Exp*_*lls 70 gem rspec ruby-on-rails testunit

我正在阅读建议使用的教程rspec,但我已经经历了很多默认的rails安装.我真的不想重做安装.无论如何,当我跑

$ rails g integration_test named
Run Code Online (Sandbox Code Playgroud)

我明白了

  invoke  test_unit
  create    test/integration/named_test.rb
Run Code Online (Sandbox Code Playgroud)

当我跑步时bundle,rspec列出了各种宝石,但事实test_unit并非如此.该教程似乎有rails调用rspec而不是test_unit做任何额外的事情.如何使用rspec集成测试生成器命令使用rails ?

Spy*_*ros 100

在您的config/application.rb文件中:

config.generators do |g|
  g.test_framework :rspec
end
Run Code Online (Sandbox Code Playgroud)

现在,当您运行生成器(示例rails generate scaffold post)时,您将获得rspec测试文件.请记住重新启动服务器.有关发电机的更多信息,请参阅

RailsCasts#216 Rails中的生成器3

如果你真的想使用integration_test生成器,你需要专门修改命令:

rails g integration_test named --integration-tool=rspec
Run Code Online (Sandbox Code Playgroud)


tov*_*ett 71

使用Rails 3.2.8rspec-rails 2.11.4,我发现我的问题出现在我的Gemfile中.我rspec-rails:test小组但不是:development小组.由于Rails默认在开发模式下运行(包括当你运行generate时),rspec-rails因此必须在你的:development组中才能挂钩到生成器中.一旦我有了这个,一切都很好.

  • 这可以在不修改`config/application.rb`的情况下工作 (12认同)
  • +1 rspec-rails安装为railitie https://github.com/rspec/rspec-rails/blob/master/lib/rspec-rails.rb#L6-7,并将自身配置为测试框架和集成工具.因此,可以在gem文件```group:development,:test do```中的共享组中包含gem (4认同)

fon*_*tno 28

从Rails 3.2.12开始,按顺序执行这些步骤

rails new app_name --skip-test-unit
Run Code Online (Sandbox Code Playgroud)

将rspec-rails添加到开发测试组的Gemfile中

group :development, :test do
  gem 'rspec-rails'
end
Run Code Online (Sandbox Code Playgroud)

bundle install

运行发电机

rails generate rspec:install
Run Code Online (Sandbox Code Playgroud)

...并清理现有的测试目录:

rm -Rf $RAILS_ROOT/test    
Run Code Online (Sandbox Code Playgroud)

  • 如果项目已经创建,这将有效.只需忽略`rails new`命令. (7认同)

Ami*_*tel 8

要使用RSpec而不是默认的Test :: Unit,请先运行以下命令

$ rails generate rspec:install
Run Code Online (Sandbox Code Playgroud)

此命令将创建以下文件夹/文件

create  .rspec
create  spec
create  spec/spec_helper.rb
Run Code Online (Sandbox Code Playgroud)

现在,只要您使用生成器生成控制器,模型等的rails组件,它就会创建相应的RSpec.


iRo*_*nin 8

今天遇到了这个问题.application.rb必须更新为:

config.generators do |g|
  g.test_framework :rspec
  g.integration_tool :rspec
end
Run Code Online (Sandbox Code Playgroud)

  • 不再需要编辑application.rb文件,至少在带有rspec-rails的Rails 3.2上 (6认同)