Wie teste ich eine Ajax-POST-Anfrage mit RSpec?

Ich möchte nur die Ajax-Anforderung auf Controller-Spezifikation testen. Der Produktcode ist unten. Ich verwende Devise zur Authentifizierung.

class NotesController < ApplicationController
  def create
    if request.xhr?
      @note = Note.new(params[:note])
      if @note.save
        render json: { notice: "success" }
      end
    end
  end
end

Und spec ist unten.

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

Ich erwarte, dass der Antwortcode 200 ist, aber es wird 401 zurückgegeben. Ich denke, es muss sein, dass der Anforderung, die rspec auslöst, authenticity_token oder etwas fehlt. Wie kann ich das verhindern?

Jede Hilfe wäre sehr dankbar.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage