2009-02-09 116 views
0

我在這裏遇到了一個失敗的測試,我無法理解。我使用Test :: Unit進行Shoulda增強。在users_controller.rb行動我想考...爲什麼此控制器測試創建操作失敗?

def create 
    unless params[:user][:email] =~/specific regex needed for this app /i 

    # ... 

    render :template => 'sessions/new' 
    end 
end 

測試...

context 'on CREATE to :user' do 
    context 'with invalid email' do 
    setup { post :create, { 'user[email]' => '[email protected]' } } 
    should_respond_with :success 
    end 
    # ... 
end 

失敗,因爲 「響應是一個<:成功>,但< 302>」。它302怎麼樣?

變化行動......

def create 
    render :template => 'sessions/new' 
end 

測試仍然失敗。

回答

1

@Ola:你錯了:POST連接創建。 PUT通常連接到更新。答:禁止是安靜的奇怪,但。這裏有一些建議,以發現問題(我從來沒有用過早該,但我不認爲這是早該有問題。

  1. 確保路由在的config/routes.rb中定義與耙路線
  2. 檢查你有可能是負責該行爲(登錄過濾器,acts_as_authenticated等)?結賬登錄/ test.log中,在過濾器鏈停止顯示出來有什麼before_filters。
  3. 打印出回覆正文puts response.body查看返回的內容

希望這會有所幫助。

-1

如果您使用的是默認的REST-ful網址,您可能應該使用PUT,而不是POST ...由於PUT已連接到創建,POST到該URL會給您一個未經授權的重定向。

+0

你確定嗎?在路徑中Rails生成「POST/users {:controller =>」users「,:action =>」create「}」我以爲是更新。儘管發佈了帖子。同樣的測試失敗。 – Ethan 2009-02-09 18:34:44

相關問題