2017-08-01 165 views
0

我試圖用rspec測試一個api控制器動作,但是由於我對rspec很新,我不能使它工作。 我有以下索引操作:渲染json:@ website.jobsRspec rails api控制器索引測試

我必須按名稱查找所有與網站相關聯的作業。這是我的規格:

let(:endpoint) { FactoryGirl.create(:website) } 
let(:job) { FactoryGirl.create(:job) } 

subject do 
    get :index, params: { format: :json, 
         name: endpoint.name } 
end 

expect(subject.body).to include(:job) 

我做錯了什麼,或者我錯過了什麼?

回答

1

您無法直接用JSON響應檢查對象。你可以做這樣的事情:

it "response with JSON body containing expected jobs" do 
    hash_body = JSON.parse(response.body) 
    expect(hash_body).first.to match({ 
    id: job.id, 
    title: job.title 
    }) 
end 

您需要根據您的Job模型來更改屬性。

一個很好的教程使用Rspec的測試JSON:Pure RSpec JSON API testing

希望這有助於。

+0

如果不是OP,幫助我! +1爲教程 – Mark

+0

不知道我是否解釋它,或理解錯誤。我不需要先將工作分配給網站嗎?所以我可以爲該網站提出請求,輸出應該是指定的工作。然後輸出爲json格式。 – Slavi

+0

所以你可以這樣做:'FactoryGirl.create(:job,website:website)',你需要在工廠中定義'website'屬性 – Deep