2016-01-15 26 views
2

我是一個新手到紅寶石,我只是創建我的第一個測試套件。紅寶石:錯誤在最小破壞用戶

當寫一個MINITEST摧毀一個用戶我得到以下錯誤:

ERROR["test_should_destroy_when_logged_in_as_a_admin", UsersControllerTest] 
test_should_destroy_when_logged_in_as_a_admin#UsersControllerTest ActionController::UrlGenerationError: 
No route matches {:action=>"https://stackoverflow.com/users/608331937", :controller=>"users"} 

測試讀取以下:

 def setup 
     @user_destroy = users(:destroyme) 
     @user_admin = users(:admin) 
    end 

    test "should destroy when logged in as a admin" do 
     log_in_as(@user_admin) 
     assert @user_admin.admin?, "not admin" 
     assert_difference 'User.count', -1 do 
      delete user_path(@user_destroy) 
     end 
    end 

和夾具:

admin: 
name: Matthias Havenaar 
email: [email protected] 
password_digest: <%= User.digest('password') %> 
admin: true 

destroyme: 
name: Destroy Me 
email: [email protected] 
password_digest: <%= User.digest('password') %> 
admin: true 

似乎比如用戶標識或用戶標識出現問題。任何想法我在這裏做錯了嗎?

+2

嘗試用'刪除替換此'刪除user_path(@user_destroy)':銷燬ID:@ user_destroy' –

+0

謝謝,確實是解決方案。這是否與這是一個控制器而不是集成測試有關? – Matthias

+0

實際上並不是becoz你寫的路徑的方式是我們通常在控制器中定義的,但minitest有自己的方法來定義路徑。 –

回答

1

試試這個,我希望這會起作用。

更換

delete user_path(@user_destroy) 

隨着

delete :destroy, id: @user_destroy