使用rake运行测试的问题

时间:2014-11-11 02:20:24

标签: ruby-on-rails ruby ruby-on-rails-3 rake

我正在开发一个Rails 3项目。详细版本信息:

rake, version 10.3.2
Rails 3.0.20
ruby 1.8.7 (2013-06-27 patchlevel 374)

我最近在测试套件中遇到了一些测试问题。如果我在没有指定任务的情况下运行rake,则rake会运行整个测试套件,并且所有测试都会通过。但是,特定任务:rake test:workers会导致测试失败。

在试图找到失败测试的底部时,我试图找出默认环境与我命名任务的环境之间的区别。但是,我找不到任何地方指定的默认任务。我在整个项目目录中搜索了“task:default”并且显示为空。我也试过rake -W :default而没有运气。

另外,我有不同的结果

ruby -I test <file path>

而不是

rake test:workers FILE=<file path>

前者运行没有失败的测试,后者失败。此外,当我中断后者(rake)命令时,我得到以下内容:

Command failed with status (1): [ruby -I"lib:test" -I"/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib" "/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib/rake/rake_test_loader.rb" "<file path>" ]

因此,看起来rake test:workers FILE=<filename>真正做的只是在ruby -I上运行变量并加载了更多目录。所以我在命令行尝试了这个:

ruby -I"lib:test" -I"/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib" "/<home directory>/.rvm/gems/ruby-1.8.7-p374@global/gems/rake-10.3.2/lib/rake/rake_test_loader.rb" "<file path>"

这给了我没有失败的测试。

总而言之,我可以使用ruby -I运行单个测试并且不会获得失败的测试,但是当rake运行时看起来是相同的命令时,我会得到失败的测试。

问题:

1)我应该在哪里查找我的:默认rake任务?

2)使用ruby -I运行任务的rake和我从命令行运行任务有什么区别?

1 个答案:

答案 0 :(得分:0)

对#1不确定。你必须挖掘它的Rails代码。我可能会检查.rake文件。我最后说了一下,并重写了我们的默认任务:

Rake::Task[:default].clear
task :default => ['test:enqueue_javascripts', 'test:all']

# test.rake
namespace :test do
  task :javascripts => 'spec:javascript'

  # Run the javascript tests on process exit
  task :enqueue_javascripts do
    at_exit { Rake::Task['test:javascripts'].invoke }
  end
end

对于#2,-I命令会将目录添加到加载路径。例如。 ruby -Itest path/to/test.rb。如果已经在加载路径中包含目录,则应该没有区别。除了通过rake运行的更多开销