如何测试mongoid falsy save尝试

时间:2017-06-15 15:11:25

标签: ruby-on-rails mongoid

目标是测试嵌入在控制器更新方法中的以下控制结构的两种情况:

  if @example.save
    flash[:success] = 'Fine'
    redirect_to some_path(@example.id)
  else
    flash[:error] = 'Failed!'
    redirect_to some_other_path(@example.id)
  end

积极的情况很简单,只需通过更新匹配路径拨打patchsave即可返回true,这就是全部。但是Mongoid::Persistable#save返回false并不那么明显,到目前为止我还没有找到办法。

是否可以在不修改经过测试的代码的情况下实现?

这是一个虚构的测试示例我会觉得没问题,但欢迎使用其他解决方案:

test 'save failure' do
    Mongoid.fail_on_save do
      post modify_example_path(@example) #
      assert_equal 'Failed!', flash[:error]
    end
end

重载Mongoid :: Persistable :: Savable#save方法的方法应该可以解决问题,但我不知道如何成功地重载模块中定义的方法。

0 个答案:

没有答案