Ruby on Rails RSpec请求规范:无法传递参数

时间:2019-02-24 11:53:20

标签: ruby-on-rails ruby rspec

让我在Rails中构建的api通过身份验证规范时遇到一些困难。

我的规格如下:

RSpec.describe 'POST /login', type: :request do
  let(:user) { create(:user) }
  let(:url) { '/login' }
  let(:params) do
    {
      user: {
        username: user.username,
        email: user.email,
        password: user.password
      }
    }
  end

  context 'when params are correct' do
    before do
      post url, params: params
    end

    it 'returns 200' do
      expect(response).to have_http_status(200)
    end
...

但是,当我尝试运行此命令时,出现以下错误:TypeError: no implicit conversion of nil into String

当我使用pry进行调试时,params变量解析为正确的哈希值:{:user=>{:username=>"MyString", :email=>"mystring", :password=>"fooBar"}},URL也正确:"/login"

使用散列本身而不是像这样的变量时,它也无法工作:post url, params: {:user=>{:username=>"MyString", :email=>"mystring", :password=>"fooBar"}}

但是奇怪的是,我可以传递类似{:user=>'hello'}之类的东西,并且即使返回401错误,它也可以运行。我在这里做什么错了?

0 个答案:

没有答案