Bjo*_*sen 12 testing ruby-on-rails minitest ruby-on-rails-4
我使用Ruby 2和Rails 4.我有一个文件夹test/lib,其中有一些测试.但是跑步rake test不会使用它们.只有其他测试(型号,控制器......)正在运行.
我在哪里添加lib文件夹?
我已经尝试了MiniTest::Rails::Testing.default_tasks << 'lib',但我明白了NameError Exception: uninitialized constant MiniTest::Rails.我没有将minitest gem添加到我的Gemfile中,因为Ruby 2默认使用它.
blo*_*age 13
要使用,MiniTest::Rails::Testing.default_tasks << 'lib'您需要将minitest-rails gem 添加到Gemfile中.它与Minitest分开,并且添加了默认情况下未在Rails中启用的许多Minitest功能.minitest-rails添加了其他功能,例如为所有具有测试的目录创建rake任务.因此,如果不对Rakefile进行任何更改,您可以运行以下内容:
$ rake minitest:lib
Run Code Online (Sandbox Code Playgroud)
或者,要以旧式方式执行此操作,您可以将以下内容添加到Rakefile:
namespace :test do
desc "Test lib source"
Rake::TestTask.new(:lib) do |t|
t.libs << "test"
t.pattern = 'test/lib/**/*_test.rb'
t.verbose = true
end
end
Rake::Task[:test].enhance { Rake::Task["test:lib"].invoke }
Run Code Online (Sandbox Code Playgroud)
这假设您希望在不使用任何数据库夹具的情况下运行lib测试.如果你想要fixtures和数据库事务,那么你应该创建一个依赖于"test:prepare"的rake任务.
namespace :test do
desc "Test lib source"
Rake::TestTask.new(:lib => "test:prepare") do |t|
t.libs << "test"
t.pattern = 'test/lib/**/*_test.rb'
t.verbose = true
end
end
Rake::Task[:test].enhance { Rake::Task["test:lib"].invoke }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4327 次 |
| 最近记录: |