的Rails 3.2.1,紅寶石1.9.3p125,rspec的2.8.0,耙0.9.2.2RAILS_ENV =測試,rake任務被忽略RSpec的內運行前:所有
耙::任務[ '命名空間:TASK_NAME' ] .invoke拒絕查找名稱空間:task_name(namespace.rake位於Rails.root/lib/tasks中)。 .execute - 相同。
所以,我做
system 'RAILS_ENV=test bundle exec rake namespace:taskname'
這似乎工作,但
- 不使用測試數據庫。
我有一個模塊,並被告知在Rails框架內編寫測試。我正在使用rspec。我有從我的「沙箱」環境中創建固定裝置的食譜任務(「開發」在別的地方,我無法訪問)。燈具創建正確。
接下來,我嘗試運行
system 'RAILS_ENV=test bundle exec rake db.fixtures.load FIXTURES=<fixture_list>'
在我的測試分貝無數據;我只是假設它被加載到我的沙箱數據庫中,這與它的派生地相同。
我模塊的目的是檢查數據庫中的其他表,併爲每個一天,是否創建爲每個34提要一個「feedstatus」的紀錄。記錄是否被創建取決於預定的時間表,「feed」是否觀察假期,星期幾是哪一天 - 許多標準變化很大,但是算法確定(這裏有許多算法)。
我可以寫幾百個測試,以測試對每個「飼料」,但每一個可能的結果(一)我覺得這是一個很大的工作; (b)將不可維護(將來會增加更多的「飼料」); (三)我還在上對算法啓發式掃描 - 新的東西或事情我沒有預料到的總是顯現和(d)我擔心我會恢復到使用該模塊使用相同的算法,測試只有我打字。
因此,計劃是創建一年中所有天的電子表格矩陣x所有的「飼料」(34x366),並手動將0或1表示「飼料」不應該或應該是那是一個工作,但跟着我的人會更習慣於更換電子表格而不是Ruby代碼,並且會出現任何不一致的情況。空測試數據庫 2.創建燈具(每次捕捉實際數據的變化) 3.載入燈具 4.運行模塊一年的日子 5.對於每個電子表格條目,匹配它存在或缺少該模塊將或不會創建的記錄。
但是 - 我被困在「加載燈具」。沒有數據被加載到測試數據庫中。
順便提及,調用模塊
system 'RAILS_ENV=test bundle exec rake namespace:task_that_calls_module'
導致使用沙盒(當前的環境),而不是測試分貝的模塊。
的task_that_calls_module還具有RAILS_ENV =測試name_of_module_method_to_perform和仍然寫入沙箱,而不是測試分貝。 「沙箱」是我的實際開發環境。
RSpec的文件Rails.root /規格/模塊:
describe "MakeExpected" do
require 'rake'
before(:all) do
system "bundle exec rake testdb:extract_fixtures"
puts "extracted fixtures"
system "bundle exec rake db:test:load"
puts "db:test:load"
system 'RAILS_ENV=test bundle exec rake db:fixtures:load'
puts "loaded fixtures"
system("RAILS_ENV=test bundle exec rake testdb:run_make_expected --trace")
end # before
it "should be true" do
end # should be true
end # describe
的TESTDB:在Rails.root/lib目錄/任務/ testdb.rake run_make_expected任務:
task :run_make_expected => :environment do
include MakeExpected
RAILS_ENV=test test_scheduler
end # task do
後,在塊之前,會有一些令人費解的測試,將db與電子表格的預期進行比較。
請告訴我這是愚蠢和簡單的東西?
哦 - bundle exec rake的東西是因爲我沒有root安裝rake到普通的bin目錄。與rspec相同。我調用這整個事件爲:
bundle exec rspec spec/modules
其中此make_expected_spec.rb是該目錄中唯一的文件。我應該說
RAILS_ENV=test bundle exec rspec spec/modules
???
我只注意到我遺漏了需要「投機/ spec_helper」的答案 - 加入它,並沒有任何區別。 – Carilda
我剛剛發現一個參考,說不能在之前加載燈具(:all)。我目前正在使用上下文圍繞測試集,並在任何測試之前在該上下文中加載fixture,所以現在這個問題是無法運行的。 – Carilda
如果您想要將解決方案作爲自己的答案重述一遍,我會刪除我的答案。 (請參閱http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments,瞭解爲什麼這會有所幫助。)謝謝! – DreadPirateShawn