2011-11-26 66 views
1

Whem我運行這個單元測試:軌單元測試失敗 「未定義的方法的要求=」「

require 'test_helper' 

class MyControllerTest < ActionController::TestCase 
    test "my action works" do 
    get(:my_action, {'url' => "http://localhost:8090/"}) 
    end 
end 

我得到這個錯誤:

NoMethodError: undefined method 'request=' for #<MyController:0x5150896> 

任何想法?

編輯這個動作只有POST,並沒有得到,但我看到了同樣的resutls當我改變在單元測試

+0

你能正常訪問控制器嗎?你可以發佈代碼嗎? – deviousdodo

+0

是的,該網站在瀏覽器中運行良好。這在控制器中也有一個空的動作。 –

回答

10

後我看到,當測試控制器的名字拼錯了這一點。你確定對於這個例子控制器被命名爲MyController?

+0

動作名稱是MyControllers(複數),它與所有使用單數的otehr自動生成的單元測試進行比較。當我將測試名稱更改爲其他名稱時,我會看到「@controller爲null」,這意味着在更改前它至少可以找到控制器 –

+0

您是對的,我認爲使用默認生成的名稱就足夠了,但我學會了從這裏,有一個不同的約定:http://stackoverflow.com/questions/7743059/how-do-i-get-rid-of-controller-is-nil-error-in-my-tests –

8

如果你忘了從ApplicationController中或某些衍生物繼承會發生這種情況?

0

主要有兩個原因:

  1. 這意味着你不需要控制器文件。或

  2. 在名稱中有一個拼寫錯誤,它正在實例化測試中的@controller變量的非 控制器。

在您的測試文件中進行交叉檢查,這將很難解決您的問題。