Когда я отправляю объект json, все поля внутри меняются на строку, нарушая мою проверку в контроллере, и я получаю следующую ошибку.Формат Rspec Параметры сообщения для значений String
Api::V1::BillsController POST #create when logged in
Failure/Error: post :create, { bill: bill_attributes }
Apipie::ParamInvalid:
Invalid parameter 'value' value "41.64794235693306": Must be Float
# ./app/controllers/concerns/exception_aspects.rb:4:in exception_wrapper
# ./spec/controllers/api/v1/bills_controller_spec.rb:135:in block (4 levels) in <top (required)>
Мой тест я пытаюсь указать request.headers['Content-Type'] = 'application/json'
let(:bill_attributes) { FactoryGirl.attributes_for :bill }
before(:each) do
request.headers['Content-Type'] = 'application/json'
post :create, { bill: bill_attributes }
end
it "when is valid description" do
expect(json_response[:description]).to eq(bill_attributes[:description])
end
Моя фабрика
FactoryGirl.define do
factory :bill do
description { FFaker::Lorem.phrase }
value { (rand() * 100).to_f }
end
end
Мой контроллер валидация являются
api :POST, "/bills", "Add a new bill to an event"
description "Add a new bill"
param :bill, Hash, :required => true, :action_aware => true do
param :description, String, "Bill description"
param :bill_photo, Hash, :required => false do
param :base64image, String, "Base 64 image file"
end
param :value, Float, "Amount of the bill"
end
Я пытаюсь изменить проверки: значение от Float
к :number
, но проблема продолжает
Я использую rails 4.2.3
и rspec 3.3.0
Я думал, все параметры представлены как строки. Как будет отображаться поплавок на api? – Swards
@Swards Я пытаюсь отправить объект json '{bill: {description: 'this is description', value: 52.54}}' – German
Если вы посмотрите на хеш params в контроллере, все параметры будут строками. Вы можете проверить, будет ли формат строки действительным float – Swards