2011-06-01 63 views
4

我想知道如何在我的rails應用程序中設置測試。當我運行rake test時,首先奇怪的是,它對我的​​開發者發起了一堆CREATE TABLE。數據庫(哼..不喜歡這..)。所以我推出rake test RAILS_ENV=test,我甚至嘗試bundle exec rake test RAILS_ENV=test。現在,CREATE TABLE是對我的測試數據庫,但都失敗,此錯誤:使用`rake test`的問題

** Execute test:units 
test/unit/category_test.rb:5:in `test': unknown command 't' (ArgumentError) 
    from test/unit/category_test.rb:5:in `<class:CategoryTest>' 

我在Rails 3中使用的基本發生器,並且不改變任何東西。所以我有這caterogy_test.rb:

require 'test_helper' 

class CategoryTest < ActiveSupport::TestCase 
    # Replace this with your real tests. 

    test "the truth" do 
     assert true 
    end 
end 

我使用Rails 3.0.7和基本配置。

任何想法?

編輯

我變得瘋狂,做了很多的嘗試,既不似乎工作。當我用一些東西開始一個新的應用程序時,rake test可以正常工作,但是當我嘗試使用當前版本的應用程序時,它始終會對我的開發者進行啓動。分貝,根本不工作。我試圖編輯測試文件,恢復它們,嘗試用不同的方式刪除/設置測試數據庫,嘗試不同的耙式版本,比較我當前應用程序的一側和另一側的許多事情。 ..什麼都沒發現..幫助!

EDIT 2

聽起來有點扯,但它是正常的,不rakerake test同樣的事情?

編輯3

聽起來賠率,而我繼續在什麼是錯的工作,我知道每一次我運行rake test,它的東西的開發環境,而不是測試一個(看日誌)。它在我的計算機OSX上和我們的服務器FreeBSD上爲所有Rails 3.0.7應用程序執行此操作。你確定rake test應該默認在測試環境中工作嗎?

編輯4

請幫忙!

編輯5 - 總結

當運行在我的電腦或我們對Rails 3.0.7與不同的應用程序服務器上rake test它具有下列功能:

  • 運行CREATE TABLE和對開發INSERT INTO遷移。 D b。
  • 請勿清空開發者。 D b。
  • development.log獲取寫入不是test.log
  • 也是一個問題與錯誤unknowm comman 't'與一個特定的應用程序。

編輯6 - DB配置從默認

沒有什麼變化尚未:https://gist.github.com/1006199

EDIT 7

rake db:test:prepare --trace - >沒有休息(但保持印刷(FIRST_TIME) https://gist.github.com/1007340

RAILS_ENV="test" for rake,一切都很好,它寫在測試日誌上秒。

ruby -I test test/unit/category_test.rbrake相同的錯誤,但沒有在dev上寫入。或測試日誌。

+0

你確定你沒有不小心把這個測試的第5行的空間。錯誤消息是說在文件test/unit/category_test.rb的第5行有一個不明白的命令「t」。如果你不小心鍵入了一個空格(如t est)或者在線上有一個額外的「t」,就可能發生這種情況。 – 2011-06-01 11:03:37

+0

你的環境中必須有一些奇怪的東西,因爲'rake test'通常知道它應該在'test'環境。我從來不需要手動強制RAILS_ENV。你修改了什麼嗎?當您創建一個新的Rails應用程序並創建相同的單一資源時,是否會再現此錯誤? – Arsen7 2011-06-01 11:41:41

+1

與你的問題沒有關係,但是當你剛開始進入測試時,爲什麼不試一試RSpec呢? – 2011-06-01 12:34:35

回答

3

一堆unorderd答案:

  • 的「CREATE TABLE」語句通常意味着你TEST_DB是從頭開始創建(默認情況下,之前的測試任務,一個分貝:遷移啓動)。你確定他們在dev_db上被調用嗎? 還要檢查你的config/database.yml,以查看是否有一些錯字(如:使用同桌的測試和開發環境)

  • 它看起來像有一些遷移文件的錯誤(即「T」錯誤記住遷移中的塊)。

  • 「rake test」是默認任務,這就是爲什麼當您只是在沒有參數的情況下啓動「rake」時才運行它。

編輯:

根據什麼我看到的編輯,從5以上,它看起來像你有一個環境文件的一些問題

。所以要儘量仔細檢查: *配置/環境/ test.rb *的config/application.rb中 *到config/environment.rb

如果與RAILS_ENV = 「測試」,一切順利,然後我幾乎肯定你已經改變了你的應用程序中的一些默認行爲(配置,環境變量,任何特定的寶石?)

也在你的測試/ test_helper.rb,在文件開頭添加RAILS_ENV ='test'這應該強制測試環境。

+0

聲音的可能性,雖然我繼續研究什麼是錯誤的,但我意識到每次運行'rake test'時,它都會在開發環境中執行測試,而不是測試(觀察日誌)。它在我的計算機OSX上和我們的服務器FreeBSD上爲所有Rails 3.0.7應用程序執行此操作。你確定'rake test'應該默認在測試環境中工作嗎? – Hartator 2011-06-01 21:03:10

+0

你可以粘貼你的config/database.yml文件嗎? – 2011-06-03 11:02:29

+0

沒有任何變化:https://gist.github.com/1006199 – Hartator 2011-06-03 11:11:27

1

我有同樣的錯誤信息,除了我說:在`測試':未知命令'我'(ArgumentError)。 的「修復」或「處理方法」是簡單地使用:

$> bundle exec rake test 

,而不是使用「耙測試」

+1

對我來說,'t'和'i'是任何第一個字母測試字符串名稱:'test't ...'','測試'我...''。 – 2014-11-09 21:11:50