我想要考虑这一堆代码,以便我的所有控制器测试(好吧,几乎所有这些)都使用这个before(:each)
块:
before(:each) do
@user = User.new
controller.stub(:authenticate_user!)
controller.stub(:current_user).and_return(@user)
controller.stub(:add_secure_model_data)
end
有没有办法做到这一点?我不想将它包含在所有控制器中......因为有一些不需要它。基本上,从SecureController
延伸的每个控制器都需要此before(:each)
块。
有没有好办法呢?
由于
答案 0 :(得分:12)
http://relishapp.com/rspec/rspec-core/dir/example-groups/shared-context
shared_context "controller stuff" do
before(:each) { ... }
end
describe SomeController do
include_context "controller stuff"
...
end
答案 1 :(得分:1)
然后将该块放入SecureController.
如果有SecureController
的特定子项不需要此功能,则可以创建另一个中间超类,或使用您控制的条件包装方法调用。