我在 RSpec 中使用 RR 进行模拟和存根,并且我遇到了一种情况,我想从设置一些实例变量的控制器的超类中存根方法。我可以弄清楚如何存根方法调用,如果我调试我可以看到我的存根块被调用,但我无法让块中的实例变量传播到我正在测试的类中。
只是为了打破它:
class A < ApplicationController
before_filter :bogglesnap
def bogglesnap
@instancevar = "totally boggled"
end
end
class B < A
def do_something_with_instance
if @instancevar
....
else
....
end
end
end
这是基本设置,所以在我对控制器 B 的测试中,我想从 A 中删除 bogglesnap 方法以将 @instancevar 设置为我想要的东西。我只是不知道该怎么做。
我已经尝试了 RR 的 instance_of 存根,只是将控制器定义存根:
stub.instance_of(A).bogglensap { @instancevar = "known value" }
stub(controller).bogglesnap { @instancevar = "known value" }
但这些似乎都不起作用,好吧,它们不起作用:)
是否有人对您应该如何存根该方法调用并设置实例变量有任何指示?我假设它与运行块的上下文有关,但我希望有人以前遇到过这样的事情。
谢谢