2009-08-26 9 views
8

Dans mes tests RSpec, je dois simuler une AJAX GET demande à l'action d'index, et ont été en utilisant le code comme décrit dans les deux rails docs et le livre RSpec:Simuler une XHR requête GET

xhr :get, :index 

Cela échoue toujours, car le test tente de charger l'action show (sans aucun paramètre) plutôt que l'action d'index spécifiée.

L'action du contrôleur est:

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 

L'erreur lancée en exécutant la spécification est (montrant l': action show utilisé):

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, ....>} 

Est-ce que quelqu'un sait comment je peux simuler un AJAX appelle l'action d'index dans les tests?

Merci!

Répondre

2

En fait, je pense que vous ne comprenez pas l'erreur. Quelque part, Rails tente d'appeler contact_url et les paramètres sont erronés. Mon soupçon est qu'il appelle en effet l'action index qui rend alors le contact partiel. Si j'ai raison, le contact partiel est l'emplacement du problème. Je recommande de revoir les contacts partiels pour toute erreur possible. Si vous rencontrez toujours des problèmes, veuillez poster le corps de vos contacts en partie.

0

Vous essayez de créer une URL vers un objet Contact non-persistant. Vous pouvez le voir dans le message: :id=>#<Contact id: nil