【问题标题】:Rspec rails api controller index testRspec rails api 控制器索引测试
【发布时间】:2017-08-01 10:41:00
【问题描述】:

我正在尝试使用 rspec 测试一个 api 控制器操作,但由于我对 rspec 很陌生,我无法使其工作。 我有以下索引操作:render json: @website.jobs

我必须按名称查找网站的所有相关工作。这是我的规格:

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)

是我做错了什么,还是我错过了什么?

【问题讨论】:

    标签: ruby-on-rails testing rspec controller


    【解决方案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

    希望这会有所帮助。

    【讨论】:

    • 帮助我,如果不是 OP! +1 教程
    • 不确定我是在解释它,还是理解错误。我不需要先给网站分配工作吗?所以我可以对该网站提出请求,输出应该是分配的工作。然后所有输出为 json 格式。
    • 所以你可以这样做:FactoryGirl.create(:job, website: website) 并且你需要在工厂中定义website 属性
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    相关资源
    最近更新 更多