Po prostu chcę przetestować żądanie ajax na specyfikacji kontrolera. Kod produktu znajduje się poniżej. Używam Devise do uwierzytelniania.Jak przetestować żądanie ajax POST z RSpec?
class NotesController < ApplicationController
def create
if request.xhr?
@note = Note.new(params[:note])
if @note.save
render json: { notice: "success" }
end
end
end
end
Spec jest poniżej.
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
Spodziewam kod odpowiedzi być 200, ale zwraca 401. Chyba musi to oznaczać, że wniosek, który rzuca rspec brakuje authenticity_token czy coś. Jak mogę go zamknąć?
Każda pomoc zostanie bardzo doceniona.
Dzięki. Wypróbowałem tę wskazówkę, ale nic nie zmieniło. I czuję się trochę nieswojo ustawienie csrf sprawdzić przy okazji przy okazji. – morygonzalez
-1 wyłączenie ochrony CSRF NIE jest rozwiązaniem tego problemu. –