2012-06-26 71 views
2

的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 

???

+0

我只注意到我遺漏了需要「投機/ spec_helper」的答案 - 加入它,並沒有任何區別。 – Carilda

+1

我剛剛發現一個參考,說不能在之前加載燈具(:all)。我目前正在使用上下文圍繞測試集,並在任何測試之前在該上下文中加載fixture,所以現在這個問題是無法運行的。 – Carilda

+0

如果您想要將解決方案作爲自己的答案重述一遍,我會刪除我的答案。 (請參閱http://meta.stackexchange.com/questions/90263/unanswered-question-answered-in-comments,瞭解爲什麼這會有所幫助。)謝謝! – DreadPirateShawn

回答

0

複製從意見的答案,以從「未答覆」過濾器中刪除了這個問題:

我剛剛發現一個人說不能在之前加載夾具參考(:所有)。我目前正在使用上下文圍繞測試集,並在任何測試之前在該上下文中加載fixture,所以現在這個問題是無法運行的。

〜每user1208039