首页 > 解决方案 > 获取 Rails 请求规范的“意外令牌”错误

问题描述

我有以下请求规范:

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_id_string]=abc123&instance[public_hostname]=0.0.0.0' 处的意外令牌

我不知道我的测试编写方式可能有什么问题。有任何想法吗?

标签: ruby-on-railsrspec

解决方案


内容类型是应用程序/json。您应该params hash 转换为 json。

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

推荐阅读