2017-08-01 173 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