2015-03-22 2 views
-1

У меня есть следующий тест:Получение ошибки «symbolize_keys» в единичном испытании

test "vote for candidate" do 
    get :vote, @candidate[:id] 
    assert_equals(1, @candidate.votes.count) 
end 

Вот метод, который я пытаюсь тест:

def vote 
    @candidate = Candidate.find(params[:id]) 
    @candidate.votes.create 
    redirect_to(candidates_path) 
end 

я получаю эту ошибку:

CandidatesControllerTest#test_vote_for_candidate: 
NoMethodError: undefined method `symbolize_keys' for "358247726":String 
test/controllers/candidates_controller_test.rb:35:in `block in <class:CandidatesControllerTest>' 

Любой толчок в правильном направлении будет большой помощью.

+0

Что в '@ candidate'? Для того чтобы '@candidate [: id]' был прав, он должен быть «хэш». – sebkkom

+1

@sebkomianos Похоже, @candidate является экземпляром модели ActiveRecord. Если я помню, модели ActiveRecord реализуют '# []'. –

+1

@WayneConrad Вы правы, мой плохой! Я закончил свой комментарий и ответ Симоны. :) – sebkkom

ответ

3

Метод get ожидает, что хэш параметров является вторым аргументом, вы передаете String. Измените эту строку

get :vote, @candidate[:id] 

в

get :vote, id: @candidate[:id] 

или, при условии, @candidate является объектом ActiveRecord:

get :vote, id: @candidate.to_param 
Смежные вопросы