2009-08-26 13 views
8

Nel mio test RSpec, ho bisogno di simulare un AJAX GET richiesta all'azione index, e sono state usando il codice come descritto in entrambi i documenti binari e il libro RSpec:Simulando un XHR richiesta GET

xhr :get, :index 

Tuttavia, questo fallisce sempre, poiché il test tenta di caricare l'azione show (senza parametri) anziché l'azione index specificata.

L'azione del controller è:

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'errore gettato eseguendo le specifiche è (che mostra il: spettacolo di azione in uso):

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

Qualcuno sa come posso simulare un AJAX chiamare l'azione indice nei test?

Grazie!

risposta

2

In realtà penso che tu abbia frainteso l'errore. Da qualche parte lungo la strada, Rails sta cercando di chiamare contact_url e i parametri sono sbagliati. Il mio sospetto è che in effetti sta chiamando l'azione indice che quindi rende parziale il contatto. Se ho ragione, i contatti parziali sono la posizione del problema. Consiglierei di rivedere i contatti parziali per eventuali errori. Se hai ancora problemi, ti preghiamo di postare il corpo dei tuoi contatti in modo parziale.

0

Si sta tentando di creare un URL per un oggetto Contatto non persistente. Lo puoi vedere nel messaggio: :id=>#<Contact id: nil