Comment puis-je tester ajax requête POST avec RSpec?
Je veux juste tester une requête ajax sur le contrôleur de spec. Le produit, le code est ci-dessous. Je suis l'aide de Concevoir pour l'authentification.
class NotesController < ApplicationController
def create
if request.xhr?
@note = Note.new(params[:note])
if @note.save
render json: { notice: "success" }
end
end
end
end
Et spec est ci-dessous.
describe NotesController do
before do
user = FactoryGirl.create(:user)
user.confirm!
sign_in user
end
it "has a 200 status code" do
xhr :post, :create, note: { title: "foo", body: "bar" }, format: :json
response.code.should == "200"
end
end
J'attends la réponse de code à 200, mais il renvoie 401. J'imagine que ça doit être parce que la demande qui rspec jette manque authenticity_token ou quelque chose. Comment puis-je frappé?
Toute aide serait grandement appréciée.
Vous devez vous connecter pour publier un commentaire.
Pour répondre à ma propre question. J'ai trouvé que
format: :json
était faux. Il suffit de supprimer et il fonctionne. Tout comme ci-dessous:Je suis désolé pour tous les tracas.
format: json
lorsque la demande est un générique xhr.post :create, xhr: true, params: { note: { title: "foo", body: "bar" } }
. Dans les futures versions, le mot clé params sera nécessaire etxhr
méthode sera supprimé.J'ai déménagé format: :json dans les params de hachage et il fonctionne très bien, de répondre avec json.
Vous avez probablement rencontré CSRF d'erreur, essayez de désactiver la validation CSRF pour les appels ajax, quelque chose comme