Ruby on rails 获得;意外标记“;Rails请求规范的错误

Ruby on rails 获得;意外标记“;Rails请求规范的错误,ruby-on-rails,rspec,Ruby On Rails,Rspec,我有以下要求规范: require 'rails_helper' RSpec.describe 'creating an instance', type: :request do it 'creates an instance' do headers = { 'CONTENT_TYPE' => 'application/json' } post '/api/v1/instances', params: { instance: {

我有以下要求规范:

require 'rails_helper'

RSpec.describe 'creating an instance', type: :request do
  it 'creates an instance' do
    headers = {
      'CONTENT_TYPE' => 'application/json'
    }

    post '/api/v1/instances', params: {
      instance: {
        instance_id_string: 'abc123',
        public_hostname: '0.0.0.0'
      }
    }, headers: headers

    expect(response.body).to eq('asdf')
  end
end
当我运行它时,我得到:

ActionDispatch::Http::Parameters::ParseError: 767:在'instance[instance\u id\u string]=abc123&instance[public\u hostname]=0.0.0'处出现意外令牌


我不知道我写测试的方式会有什么问题。有什么想法吗?

将我的测试改为以下方式有效:

require 'rails_helper'

RSpec.describe 'creating an instance', type: :request do
  it 'creates an instance' do
    params = {
      instance: {
        instance_id_string: 'abc123',
        public_hostname: '0.0.0.0'
      }
    }

    post '/api/v1/instances', params: params

    expect(response.body).to eq('asdf')
  end
end

内容类型是application/json。您应该参数散列转换为json

params = { instance: {
    instance_id_string: 'abc123',
    public_hostname: '0.0.0.0'
}}
post '/api/v1/instances', params: params.to_json, headers: headers