我正在写一个插件的规格,有不同的模块,用户可以选择加载。 其中一些模块动态地将before_filters添加到ApplicationController。Rails 3如何在规范之间重置控制器before_filters?
问题是,如果模块X的规格运行并添加了before_filter,则稍后运行的模块Y的规格将失败。我需要以某种方式运行清洁 ApplicationController上的第二个规格。
有没有一种方法可以在过滤器之前移除或在规范之间重新加载ApplicationController?
例如在下面的规格,第二个“它”不及格:
describe ApplicationController do
context "with bf" do
before(:all) do
ApplicationController.class_eval do
before_filter :bf
def bf
@text = "hi"
end
def index
@text ||= ""
@text += " world!"
render :text => @text
end
end
end
it "should do" do
get :index
response.body.should == "hi world!"
end
end
context "without bf" do
it "should do" do
get :index
response.body.should == " world!"
end
end
end
感谢,但它并不在我的情况下工作。我已经为我的问题添加了一个示例规范。 – 2011-02-09 21:36:41