2016-01-15 5 views
2

Я новичок в рубине и просто создаю свой первый набор тестов.Ruby: ошибка в minitest для уничтожения пользователя

При написании 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 

Это кажется например, что-то не так с идентификатором пользователя или user_path. Любая идея, что я делаю неправильно здесь?

+2

попытаться заменить этот 'удалить user_path (@user_destroy)' 'с удаления: уничтожить, идентификатор: @ user_destroy' –

+0

Спасибо, что действительно является решением. Это связано с тем, что это контроллер, а не тест интеграции? – Matthias

+0

Не на самом деле becoz То, как вы написали путь, это то, что мы обычно определяем в контроллере, но у minitest есть собственный способ определения путей. –

ответ

1

Попробуйте это, я надеюсь, что это сработает.

Заменить

delete user_path(@user_destroy) 

С

delete :destroy, id: @user_destroy