我正在阅读建议使用 rspec
的教程,但我已经完成了很多默认的 rails 安装。我真的不想重做安装。无论如何,当我跑步时
$ rails g integration_test named
我明白了
invoke test_unit
create test/integration/named_test.rb
当我运行 bundle
时,会列出各种 rspec
gem,但没有列出 test_unit
。本教程似乎让 rails 调用 rspec
而不是 test_unit
而没有做任何额外的事情。如何让 rails 将 rspec
与集成测试生成器命令一起使用?
在您的 config/application.rb
文件中:
config.generators do |g|
g.test_framework :rspec
end
现在,当您运行生成器(例如 rails generate scaffold post
)时,您将获得 rspec 测试文件。记得重启你的服务器。有关生成器的更多信息,请参见:
RailsCasts #216 Generators in Rails 3
如果你真的想使用 integration_test 生成器,你需要专门修改命令:
rails g integration_test named --integration-tool=rspec
使用 Rails 3.2.8 和 rspec-rails 2.11.4,我发现问题出在我的 Gemfile 中。我在 :test
组中有 rspec-rails
,但在 :development
组中没有。由于 Rails 默认在开发模式下运行(包括在您运行 generate 时),rspec-rails
必须在您的 :development
组中才能挂接到生成器。一旦我把它做好了,一切都很好。
group :development, :test do
的共享组中
从 Rails 3.2.12 开始,按顺序执行以下步骤
rails new app_name --skip-test-unit
将 rspec-rails 添加到开发、测试组中的 Gemfile
group :development, :test do
gem 'rspec-rails'
end
运行 bundle install
运行生成器
rails generate rspec:install
...并清理您现有的测试目录:
rm -Rf $RAILS_ROOT/test
rails new
命令。
rm -Rf $RAILS_ROOT/test
命令,您也会删除邮件预览...
今天碰到这个问题。 application.rb 必须更新为:
config.generators do |g|
g.test_framework :rspec
g.integration_tool :rspec
end
要使用 RSpec 而不是默认的 Test::Unit,请先运行以下命令
$ rails generate rspec:install
此命令将创建以下文件夹/文件
create .rspec
create spec
create spec/spec_helper.rb
现在,每当您使用生成器生成控制器、模型等 Rails 组件时,它都会创建相应的 RSpec。
在配置/应用程序中,添加此代码
config.generators do |g|
g.test_framework :rspec
g.integration_tool :rspec
end
1.新建rails app时,跳过TestUnit框架,否则会生成test_unit目录。
$rails new your_app --skip-test-unit
2. 将以下代码添加到 your_app/config/application.rb 文件:
config.generators do |g| g.test_framework :rspec end
3. 将以下代码添加到 your_app 的 Gemfile:
group :test, :development do gem 'rspec-rails' end
保存,然后运行 bundle install
安装 rspec gem
4.初始化spec/目录
rails generate rspec:install
更多详情,请参考:https://github.com/rspec/rspec-rails
我发现我所做的其他一些方法仍然有效的是检查我的拼写....我有 @tovodeverett 将 rspec-rails 与 :development 和 :test 分组但拼写不正确的内容。这解决了我的问题,但我使用 test_unit 而不是 rspec 生成测试。
$ rails g model Account
invoke active_record
create db/migrate/20140205052617_create_accounts.rb
create app/models/account.rb
invoke test_unit
create test/models/account_test.rb
create test/fixtures/accounts.yml
$ rails d model Account
运行 script/rails generate rspec:install 不会将 rspec 添加为默认框架。在 config/application.rb 中添加了以下命令,然后它就可以工作了
config.generators do |g|
g.test_framework :rspec
end
$ rails g model Account
invoke active_record
create db/migrate/20140205052957_create_accounts.rb
create app/models/account.rb
invoke rspec
create spec/models/account_spec.rb
$ rails -v
Rails 4.0.2
rails g scaffold --help
,它仍然显示 test_unit。我需要做些什么来重新运行配置或以某种方式手动更改这些设置吗?g.test_framework :test_unit
一起使用。