2015-06-01 37 views
0

我正在構建一個Rails後端API,並且我有一個接收發布請求的控制器。我正在使用rspec調用端點,到目前爲止它看起來像在工作。但是我無法想象我的迴應。 (控制器工作並呈現正確的JSON)。我的規格如下所示:rails/rspec如何獲得響應時,身體的API發佈的請求?

require "spec_helper" 
require "rspec_api_documentation/dsl" 

resource "Data" do 
    header "Accept", "application/json" 
    header "Content-Type", "application/json" 
    header "Host", "public.example.com" 

    describe "receives POST request with body", :type => :request do 
    params = { type: ["1", "2", "3"], fromDate: "26/05/2015", toDate: "30/05/2015" } 
    post "/api/v1/data/totals", params.to_json 
    end 
end 

該測試通過,但我似乎不能夠檢索所呈現的JSON。我試過把下面的描述塊:

puts response_body 
puts response.body 
puts page.body 

有誰知道正確的語法?

+0

應該是控制器規格 – apneadiving

+0

爲什麼,是什麼改變?我嘗試過,但我仍然在請求規範中得到了相同的錯誤 – Mischa

+0

,您應該只使用'visit',然後與瀏覽器進行交互 – apneadiving

回答

0

所以我找到了一些朋友的幫助。這是正確的語法與使用RSpec的API文檔/ DSL的:

require "spec_helper" 
require "rspec_api_documentation/dsl" 

resource "Data" do 
    header "Accept", "application/json" 
    header "Content-Type", "application/json" 
    header "Host", "public.example.com" 

    describe "Post a request to totals" do 
    parameter :type,"selected data type" 
    parameter :fromDate, "start date" 
    parameter :toDate, "end date" 

    let(:type) { ["1", "2", "3"] } 
    let(:fromDate) { "26/05/2015" } 
    let(:toDate) { "30/05/2015" } 

    post "/api/v1/data/totals" do 
     let(:raw_post) { params.to_json } 
     example_request "with a body" do 
     expect(response_body).to include(fromDate, toDate) 
     expect(status).to eq(200) 
     end 
    end 
    end 
end 
+0

找出一些幫助,請標記爲正確答案。 –

+0

我會,如果我可以,必須等待2天。 (現在好了1小時) – Mischa

+0

啊,我沒有意識到有延遲執行。 –

1

describe區塊內,您的測試需要位於itspecify區塊內。

編輯 - 我看到你正在使用rspec_api_documentation gem。我對此並不熟悉,但它看起來像是混合了兩種格式的語法 - 寶石的DSL和RSpec自己的DSL。寶石的自述文件不顯示正在使用的describe。我會建議堅持使用普通的RSpec,直到它通過,然後嘗試引入寶石。

+0

想要但我正在處理一個現有的項目。通過 – Mischa

相關問題