2015-04-06 41 views
1

我已经写在轨葡萄API更新操作,如下所示:葡萄API Put请求接收405错误只RSPEC

put do 
    work = Work.find(permitted_params[:id]) 
    work.title = permitted_params[:title] 
    work.date = permitted_params[:date] 

    work.save! 
end 

测试它与招摇文档在浏览器中,我得到成功。

我有一个规范,它工作不正确。尽管浏览器取得了成功,但我的测试失败了,因为它表示它在响应中获得了405分。这是规范:

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 

我很好奇为什么它似乎工作正常,但我仍然在我的测试中得到一个405错误。

编辑以包括从所述服务器响应 { “X框-选项”=> “SAMEORIGIN”, “X-XSS-保护”=> “1;模式=块”,“ X-Content-Type-Options“=>”nosniff“,”Allow“=>”OPTIONS,GET,HEAD“,”Content-Type“=>”text/plain“,”Content-Length“=>”0“ ,“Cache-Control”=>“no-cache”,“X-Request-Id”=>“5edd38be-289d-4e97-875d-2461389a746d”,“X-Runtime”=>“0.088867”} #

+0

请张贴测试日志上述要求。他们在'logs/test.log'中可用 – bsvin33t

+0

这看起来像我大多是垃圾,我无法真正理解。有没有可以添加的宝石来提高读数?只需在日志中打印出响应,我就能确定405错误。 – amhasler

+0

您可以删除日志并重新运行一个可以提供405的规格。从中可以看到单个请求的失败消息。 – bsvin33t

回答