如果lambda由rspec触发,则为最佳实践

时间:2013-09-08 14:32:03

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

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

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

它有效,但我的规格有问题。我想检查如果价格改变或者它没有改变,是否正确调用了lambda。我记下了经理对象。我可以检查哪些参数传递,但我认为检查lambdas很困难。另外,我想检查lambda中的动作是否正确。

是否有最佳做法可以做这样的事情?

1 个答案:

答案 0 :(得分:0)

: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