我有一个我正在尝试完成的控制器测试。基本上控制器看起来像这样:
before_filter :set_up_foo
def set_up_foo
...
@foo = SomeObject.create(params[:some_object_attributes])
...
end
def some_action
# reference @foo
if @foo.nil?
...
else
# this is what I want to test
...
end
end
我不想测试 else 块的内部结构,而不是 before 过滤器。在我的情况下,我必须模拟大量模型对象才能实际执行 before 过滤器。我对此有另一个测试。我想确保完成之前过滤器的“副作用”......在这种情况下,@foo 被初始化为它的模拟版本。
基本上我想做:
controller.foo = mock_foo_object
但这不起作用。我也试过:
controller.stub!(:foo).and_return(mock_foo_object)
尽管我希望(哈哈)这行得通,但事实并非如此。我得到的唯一真实反馈是 @foo 对象从未设置,因此我们得到了 if,而不是 else 条件。
任何帮助将不胜感激...