在我的RSpec测试中,我需要模拟对索引操作的AJAX GET请求,并且一直在使用Rails文档和RSpec书中描述的代码:
xhr :get, :index
这总是失败,因为测试试图加载show动作(没有任何参数)而不是指定的索引动作。
控制器操作是:
def index
@contacts = Contact.all
respond_to do |format|
format.html
format.js {
render :update do |page|
page.replace_html :contact_search_results, :partial => 'contacts'
end
}
end
end
运行规范引发的错误是(显示:正在使用的show动作):
ActionView::TemplateError in 'ContactsController as an administrator user when
showing the index of contacts' as an AJAX request should render results into the
contact_search_results element'
contact_url failed to generate from {:action=>"show", :controller=>"contacts",
:id=>#<Contact id: nil, first_name: nil, ....>}
有谁知道如何模拟AJAX调用测试中的索引操作?
谢谢!
答案 0 :(得分:2)
实际上我认为你误解了这个错误。在Rails的某个地方尝试调用contact_url
并且参数错误。我怀疑它确实在调用索引动作,然后将联系人部分呈现。如果我是对的,联系人部分是问题的位置。我建议检查联系人部分是否存在任何可能的错误。如果您仍然遇到问题,请将您的联系人的正文部分发布。
答案 1 :(得分:0)
您正在尝试为非持久性Contact对象创建一个URL。您可以在邮件中看到::id=>#<Contact id: nil