我有两个应用程序。一个是我用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 :(得分: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
。