如何解决我的rake任务列表中缺少的“rake test”问题?

时间:2011-12-20 19:52:36

标签: ruby-on-rails-3 rake

我有两个应用程序。一个是我用rails new...构建的非常简单的应用程序,为单元测试添加了一个单元测试。另一个是运行良好的现有应用程序,但我想添加一些测试。在AppA(简单的一个)中,当我运行rake -vT时,我看到:

...
rake test               # Runs test:units, test:functionals, test:integrati...
rake test:recent        # Run tests for {:recent=>"test:prepare"} / Test re...
rake test:single        # Run tests for {:single=>"test:prepare"}
rake test:uncommitted   # Run tests for {:uncommitted=>"test:prepare"} / Te...
...

这似乎很正常。但是当我在AppB(现有应用程序)中运行相同的命令时,我没有看到任何与rake test相关的命令。我的第一个想法就是将AppA的测试“转移”到AppB,看看是否有帮助。因此,我从AppB中的测试目录中擦除了所有内容,并从AppA复制到测试目录中。应用列表中仍然没有rake test。但我可以通过ruby -Itest test/unit/first_test.rb在AppB中运行单元测试(奇怪的是我必须发表评论fixtures :all才能使其工作,也许这是一个线索)。

2 个答案:

答案 0 :(得分:1)

昨晚找到了答案。新应用程序的application.rb有:

  require 'rails/all'

我有:

  require "action_controller/railtie"
  require "action_mailer/railtie"
  require "active_resource/railtie"
  require "sprockets/railtie"
  require "rails/test_unit/railtie"

我这样做是因为我正在关注MongoMapper的指南。前进几个版本,最后一行被注释掉 - 这才是真正的原因。我在将ODM切换到Mongoid的同时评论了它。我不确定为什么我评论它,但这肯定是这样做的。

答案 1 :(得分:0)

如果不知道Rakefile的内容,则很难对其进行调试,但您可能会错过.load_tasks中的Rakefile来电。

如果你使用Rails 3,你应该有这样的东西:

MyApplication::Application.load_tasks

该行将负责加载默认的Rails任务。您可以在require "rails/tasks"中完成相同的调用Rakefile