删除test :: unit

use*_*697 15 ruby-on-rails ruby-on-rails-3

我忘了使用-T参数创建我的应用程序,现在它已经安装了test :: unit.在创建应用程序之后,如何删除test :: unit并阻止它为生成的每个控制器/模型创建测试?谢谢

dog*_*unk 12

在你的config/application.rb中试试

config.generators do |g|
  g.test_framework :rspec #=> or whatever
end
Run Code Online (Sandbox Code Playgroud)

回应评论

尝试

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

可能不是"最合适"或Rails-ish方式,但它有效

更新

我今天正在阅读Rails初始化指南,并意识到Test :: Unit最可能的原因仍然是这一行:

require 'rails/all'

哪个可以替换为:

require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
Run Code Online (Sandbox Code Playgroud)

这应该解决这个问题.如果您使用的是Rails 3.1.x,那么您还需要包括

require "sprockets/railtie"
Run Code Online (Sandbox Code Playgroud)

如果您打算使用资产管道.

更新2

对于Rails 3.2,你应该使用这个:

config.app_generators do |c|
  c.test_framework :rspec, :fixture => true,
                           :fixture_replacement => nil

  c.integration_tool :rspec
  c.performance_tool :rspec
end
Run Code Online (Sandbox Code Playgroud)

  • 我想删除当前的测试框架,而不是替换它? (2认同)

小智 7

删除测试:Rails 4中的单位:

config/application.rb替换以下行:

require 'rails/all'
Run Code Online (Sandbox Code Playgroud)

附:

require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
Run Code Online (Sandbox Code Playgroud)

您也可以安全地删除测试目录.


mtr*_*lle 6

rails new APP_NAME --skip-test-unitRails 4中构建一个新的应用程序导致:

require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
Run Code Online (Sandbox Code Playgroud)


Ped*_*iva 6

开启Rails 6替换config/application.rb

require 'rails/all'
Run Code Online (Sandbox Code Playgroud)

为了:

require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "active_storage/engine"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_mailbox/engine"
require "action_text/engine"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
Run Code Online (Sandbox Code Playgroud)

像这样添加config.generators.system_tests = nil到应用程序块:

module YourApp
  class Application < Rails::Application
    ...
    ...

    # Don't generate system test files.
    config.generators.system_tests = nil
  end
end
Run Code Online (Sandbox Code Playgroud)


Suj*_*eev 5

在Rails 5.1和Rails 5.2上

config/application.rb

删除或注释掉

require 'rails/all'
Run Code Online (Sandbox Code Playgroud)

然后包括

require "rails"
# Pick the frameworks you want:
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "action_cable/engine"
require "sprockets/railtie"
# require "rails/test_unit/railtie"
Run Code Online (Sandbox Code Playgroud)

此外,如果您不希望生成系统测试文件,请添加以下内容:

# Don't generate system test files.
config.generators.system_tests = nil
Run Code Online (Sandbox Code Playgroud)

完成后,您可以删除该test目录

  • 是的,但现在使用 5.2,您还可以添加:`require "active_storage/engine"` (2认同)