目标是测试嵌入在控制器更新方法中的以下控制结构的两种情况:
if @example.save
flash[:success] = 'Fine'
redirect_to some_path(@example.id)
else
flash[:error] = 'Failed!'
redirect_to some_other_path(@example.id)
end
积极的情况很简单,只需通过更新匹配路径拨打patch
,save
即可返回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方法的方法应该可以解决问题,但我不知道如何成功地重载模块中定义的方法。