Виноград + Огурец | количество аргументов
в моих тестах с огурцом у меня возникла проблема.
я получаюwrong number of arguments (given 1, expected 0) (ArgumentError)
ошибка при попытке сделать запрос.
Я делаю запрос, в котором отсутствуют параметры, и должен получить ошибку 400 с сообщением об отсутствующем параметре.
params do
requires :field_a, type: Integer
requires :field_b, type: Integer
requires :field_c, type: Float
requires :field_d, type: Float
optional :active, type: Boolean
end
post do
result = Category.create_or_update(params)
present result, with: Api::V1::Entities::CategoryObject
end
как и мое спасение_от:
rescue_from Grape::Exceptions::ValidationErrors do |e|
Rails.logger.debug(e)
error!({ error: e.message, class: e.class.name, errors: e.errors }, e.status)
end
1 ответ
Я нашел проблему. внутриGrape::Exceptions::ValidationErrors
return блок, у меня был Logger.debug. При проверке работающего кода я заметил что-то странное сRails.Logger.debug
когдаValidationErrors
объект был отправлен. Затем я понял, что необходимо передать «строку», а не объект для рендеринга.
# Before:
rescue_from Grape::Exceptions::ValidationErrors do |e|
error = { error: e.message, class: e.class.name, errors: e.errors }
Rails.logger.debug(e)
Rack::Response.new(error.to_json, e.status)
end
# After:
rescue_from Grape::Exceptions::ValidationErrors do |e|
error = { error: e.message, class: e.class.name, errors: e.errors }
Rails.logger.debug(error.to_json) <----- HERE
Rack::Response.new(error.to_json, e.status)
end