2011-12-20 83 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