2015-04-06 2 views
1

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"} #

+0

s'il vous plaît afficher les journaux de test pour les demandes ci-dessus. Ils sont disponibles dans 'logs/test.log' – bsvin33t

+0

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

+0

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

Répondre