J'ai écrit une action de mise à jour avec l'API de raisin dans des rails, ici:demande formulée avec l'API Grape reçoit 405 erreur uniquement avec Rspec
put do
work = Work.find(permitted_params[:id])
work.title = permitted_params[:title]
work.date = permitted_params[:date]
work.save!
end
test avec la documentation de fanfaronnades dans mon navigateur, je reçois Succès.
J'ai une spécification qui ne fonctionne pas correctement. Malgré le succès dans le navigateur, mon test échoue car il dit qu'il obtient un 405 dans la réponse. Voici les spécifications:
describe "PUT /api/v1/works/work_id" do
let(:user) { FactoryGirl.create(:user) }
let(:collection) { FactoryGirl.create(:collection, user: user) }
let(:work) { FactoryGirl.create(:work, collection: collection) }
let(:work_data) do
{
collection: collection.id,
title: "Lorem ipsum dolor sit amet",
date: 1492,
place: "Chicago",
}
end
describe "Modify title" do
let(:work_title) { "gfd" }
before :each do
work_data[:title] = work_title
put "/api/v1/works/#{work.id}", work_data
work.reload
end
it "returns success" do
expect(response).to be_success
end
it "updates the title of the work" do
expect(work.title).to eql(work_title)
end
end
end
Je suis curieux de savoir pourquoi il semble fonctionner correctement, mais je reçois encore une erreur 405 dans mon test.
Modifier pour inclure réponse du serveur { "X-Frame-Options" => "SAMEORIGIN", "X-XSS-Protection" => "1; mode = bloc", " X-Content-Type-Options "=>" nosniff "," Autoriser "=>" OPTIONS, GET, HEAD "," Content-Type "=>" text/plain "," Content-Length "=>" 0 " , "Cache-Control" => "pas de cache", "X-Request-Id" => "5edd38be-289d-4e97-875d-2461389a746d", "X-Runtime" => "0.088867"} #
s'il vous plaît afficher les journaux de test pour les demandes ci-dessus. Ils sont disponibles dans 'logs/test.log' – bsvin33t
Cela semble être surtout de la malbouffe que je ne peux pas vraiment comprendre. Y at-il un bijou que je peux ajouter pour améliorer cette lecture? J'ai pu déterminer l'erreur 405 en imprimant simplement la réponse dans le journal. – amhasler
Vous pouvez supprimer le journal et réexécuter une seule spécification qui vous donne un 405. À partir de là, vous verrez le message d'échec pour une seule requête. – bsvin33t