Виноград + Огурец | количество аргументов

в моих тестах с огурцом у меня возникла проблема.

я получаю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::ValidationErrorsreturn блок, у меня был 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
Другие вопросы по тегам