2011-12-20 49 views
0

我有两个应用程序。一个是我用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注释掉才能运行,也许这是一个线索)。

回答

0

昨天晚上找到了答案。当一个新的应用的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的同时对它进行了评论。我不知道我为什么评论它,但肯定做到了。

0

不知道您的Rakefile的内容真的很难调试,但您可能会错过Rakefile中的.load_tasks呼叫。

如果您使用的Rails 3,你应该有这样的事情:

MyApplication::Application.load_tasks 

该行将采取加载默认的Rails任务的照顾。您可能可以在Rakefile中完成相同的呼叫require "rails/tasks"

+0

感谢您拍摄。虽然看起来不像那样。该Rake文件有'需要File.expand_path(“../配置/应用”,__FILE__) 该app :: Application.load_tasks ' – jcollum 2011-12-21 00:56:05

+0

不知道发生了什么事情的话,但你可以尝试添加'负荷“轨/ test_unit/testing.rake“'给你的Rakefile,它应该给你测试任务。 – 2011-12-21 06:36:56