ruby 葡萄+ cucumber |变元数

o0lyfsai  于 2023-06-22  发布在  Ruby
关注(0)|答案(1)|浏览(149)

在我用 cucumber 做的测试中我有一个问题。
当我尝试发出请求时,出现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:

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
l2osamch

l2osamch1#

我发现问题了。在Grape::Exceptions::ValidationErrors返回块中,我有一个Logger.debug。在检查正在运行的代码时,我注意到在发送ValidationErrors对象时,Rails.Logger.debug有些奇怪。然后我意识到有必要传递一个“字符串”,而不是要呈现的对象。

# 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

相关问题