【问题标题】:Best practices if lambdas are triggered by rspecrspec 触发 lambda 的最佳实践
【发布时间】:2013-09-08 14:32:02
【问题描述】:

我创建了一个这样的控制器动作:

def update
  manager.update(
    price_change: -> {
      redirect_to new_painting_order_path(painting)
    },
    price_not_change: -> {
      user_path(current_user)
    }
  )
end

它有效,但我的规格有问题。我想检查价格变化或不变时是否正确调用了 lambda。我存根管理器对象。我可以检查通过了哪些参数,但我认为很难检查 lambda。另外,我想检查一下 lambdas 中的操作是否正确。

是否有最佳实践来做这样的事情?

【问题讨论】:

    标签: ruby-on-rails ruby rspec-rails


    【解决方案1】:

    :price_change 返回的是什么?你不能把它写成 if 语句吗?

    def update
      if manager.update_attributes(params[:manager])
        if price_change?
          redirect_to new_painting_order_path(painting)
        else
          user_path(current_user)
        end
      end
    end
    

    【讨论】:

    • manager 是一个服务对象,而不是一个模型。我希望有一个服务对象来将绘画的更新过程提取到另一个对象以获得更好的架构。
    • 所以你成功了吗?检查我的答案是否有帮助,但也更新您的问题,我想看看您最终是如何解决的:)
    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 2017-11-14
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多