在创建新的 Rails 应用程序时,如何告诉 Rails 使用 RSpec 而不是 test-unit?

Posted

技术标签:

【中文标题】在创建新的 Rails 应用程序时,如何告诉 Rails 使用 RSpec 而不是 test-unit?【英文标题】:How can I tell Rails to use RSpec instead of test-unit when creating a new Rails app? 【发布时间】:2011-10-07 09:39:20 【问题描述】:

我安装了test-unitrspec(以及-core-expectations-mocks-rails 2.6.x 版)。当我运行命令rails new foo 时,它使用test-unit 而不是rspec 来生成测试存根文件。

我可以告诉 rails 使用 rspec 来生成测试吗?

【问题讨论】:

【参考方案1】:

以下应该有效:

在命令行:

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

在 Gemfile 中:

gem 'rspec-rails'

在命令行:

bundle install
rails g rspec:install

【讨论】:

我认为其中一些步骤不正常,不是吗?如果按照正确的顺序完成,这看起来会起作用。请编辑您的答案,我会将其标记为已接受。 你不需要 generator.rb 初始化器,这由 RSpec 的 railtie 处理。您所需要的只是development 组中的rspec-rails Gemfile,这足以让生成器需要它。您也不需要使用-T 生成应用程序,您可以删除test 目录,它会工作。 你能把代码从 g.test_framework = :rspec 编辑成 g.test_framework :rspec @RyanBigg:使用 -T 选项,我们将在 application.rb 中注释掉 "rails/test_unit/railtie" 当您添加rspec-rails gem 时,重要的是对其进行测试开发,否则即使您按照上述步骤操作,生成器也不会使用RSpec。 【参考方案2】:

将您的新 Rails 应用程序创建为:

rails new <app_name> -T

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

rm -rf test/

在您的 Gemfile 中创建一个条目:

gem 'rspec-rails'

从命令行安装 gem

$ bundle install

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

$ rails g rspec:install

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

【讨论】:

该列表中缺少“捆绑安装”步骤。已添加。【参考方案3】:

一旦你创建了你的 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 cmets,以更好地了解每个选项的作用。

一切就绪后,您可以运行所有测试:

bundle exec rspec

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

【讨论】:

【参考方案4】:

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

这是要点&&我希望这对那里的人有所帮助。 https://gist.github.com/MTen/8310116

【讨论】:

【参考方案5】:

rails CLI 没有本地方法可以做到这一点。生成一个没有test-unit的新项目:

rails new rails-app --skip-test

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

【讨论】:

以上是关于在创建新的 Rails 应用程序时,如何告诉 Rails 使用 RSpec 而不是 test-unit?的主要内容,如果未能解决你的问题,请参考以下文章

在创建新的 Rails 应用程序时

我可以在同一台机器上使用/使用不同版本的rails

部署时如何告诉 Rails 使用生产数据库(而不是开发数据库)?

如何在2个服务器之间进行通用认证--Rails和Django

创建新的 Rails 操作不起作用?

Rails 4 在保存时创建关联对象