Params在Rspec post请求中嵌套在params中

时间:2018-02-26 00:12:52

标签: rails-activerecord rspec-rails nested-routes

我目前正在使用Rspec请求测试嵌套路由的发布请求。

它设置如下:

describe 'POST /url_contents' do
  let!(:role) { create(:role, name: "admin") }
  let(:valid_attributes) {
    {
      jwt: "SAMPLE",
      role: role
    }
  }

  context 'when the url is valid' do
    before { post "/#{role.name}/1", params: valid_attributes }

    it 'returns a status code of 201' do
      expect(response).to have_http_status(201)
    end

  end
end

我正在击中我的控制器,但当我检查params时,我得到了一个嵌套的params:

:params => { :params => { :jwt => "SAMPLE", :role => #<Role:0x0055959d32a888>" }, "controller"=> "auth"... }

如何让params指向我的控制器:jwt

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方案,但很乐意听到其他想法。

context 'when the jwt is valid' do
  before { post "/#{role.name}/1", {
    jwt: "SAMPLE",
    role: role
  }
}

现在params没有嵌套。