【发布时间】:2015-03-22 18:49:03
【问题描述】:
我有以下测试:
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>'
任何朝着正确方向的推动都会有很大的帮助。
【问题讨论】:
-
@candidate中有什么内容?为了使@candidate[:id]正确,它必须是hash。 -
@sebkomianos 看起来@candidate 是ActiveRecord 模型的一个实例。如果我记得,ActiveRecord 模型确实实现了
#[]。 -
@WayneConrad 你是对的,我的错!我最终赞成你的评论和西蒙娜的回答。 :)
标签: ruby-on-rails ruby unit-testing testing