14

我有一个在 ruby​​ 1.9.2-p290 上运行良好的现有 rails 3 项目。但是升级到 ruby​​ 1.9.3-p0 会导致rake test出现以下错误:

/Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: test/unit/**/*_test.rb (ArgumentError)
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'
/Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:167:in `block in non_options': file not found: test/functional/**/*_test.rb (ArgumentError)
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `map!'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:146:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:207:in `non_options'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:52:in `process_args'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:891:in `_run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/minitest/unit.rb:884:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:21:in `run'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:326:in `block (2 levels) in autorun'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:27:in `run_once'
from /Users/zmanji/.rbenv/versions/1.9.3-p0/lib/ruby/1.9.1/test/unit.rb:325:in `block in autorun'

这似乎是这个rake 问题的结果。但是,当我在 ruby​​ 1.9.3 上创建一个简单的 rails 项目时,就会出现这样的错误。我该怎么做才能让我的 rails 项目在 ruby​​ 1.9.3 上运行?

4

4 回答 4

9

添加测试单元 gem 对我有用。

于 2012-03-02T21:46:32.793 回答
6

尝试以下(独立):

  1. 利用test.test_files = FileList['test/unit/**/test*.rb']
  2. 移除shouldabeta 依赖。
  3. 使用test/unit宝石。
于 2012-01-03T03:25:48.467 回答
4

在 ruby​​ 1.9.3 的测试环境中使用时,gem 会导致一般问题,此shoulda问题已报告rake

解决方法

你可以使用这条线

gem "shoulda", :require => false

在您的 Gemfile 中,然后在您的测试代码中的某个位置(例如test/test_helper.rb,如果您使用的是测试单元),您可以将

require 'shoulda'

如果您使用的是 rspec,则根本不应该使用shouldagem,而应该使用 the shoulda-matchers,这不会导致问题。

于 2012-10-09T12:33:06.927 回答
0

我们将 rake 任务(rake 文件)更改为如下所示

require 'rake/testtask'
  ...
desc "Run all tests in folder tests/test*.rb"
Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList['tests/test*.rb']
  t.verbose = true
end

基于:http ://rake.rubyforge.org/classes/Rake/TestTask.html

于 2013-08-20T11:15:31.570 回答