为什么在规范中设置@controller会导致ActionView :: MissingTemplate错误?

时间:2016-05-31 03:25:58

标签: ruby-on-rails rspec

我的rspec测试已经开始抛出错误

ActionView::MissingTemplate:

e.g。 Missing template users/index

正在提出./spec/controllers/users_controller_spec.rb

这些模板肯定存在。

经过大量调试后,我将其追溯到另一​​个正在测试信誉/积分系统的控制器规范。因为声誉适用于各种控制器和操作,所以我将每个规范设置如下:

#./spec/controllers/reputation_rules_spec.rb
describe 'Reputation Rules', type: :controller do
  describe "update user" do
    before :each do
      @controller = UsersController.new
    end
    it 'tests that reputation is adjusted' 
  end
  describe "tests reptation on other controller/action combinations"....
end

如果我注释掉@controller行,missing template错误就会消失,但当然声誉规范也会失败。

为什么此@controller行会影响当前规范之外的测试?

我需要在测试后以某种方式重置@controller,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

我通过添加

解决了这个问题
#./spec/controllers/reputation_rules_spec.rb
after :all do 
  @controller = nil
end

但仍不清楚为什么@controller会持续进入其他测试