ruby-on-rails – 匿名控制器的Rspec stubing视图

我试图在应用程序控制器上测试一个将用作之前的过滤器的方法.为了做到这一点,我在我的测试中设置了一个匿名控制器,应用了以前的过滤器,以确保它正常工作.

测试目前看起来像这样:

describe ApplicationController do
  controller do
    before_filter :authenticated

    def index      
    end
  end

  describe "user authenticated" do
    let(:session_id){"session_id"}
    let(:user){OpenStruct.new(:email => "pythonandchips@gmail.com",:name => "Colin Gemmell")}

    before do
      request.cookies[:session_id] = session_id
      UserSession.stub!(:find).with(session_id).and_return(user)
      get :index
    end

    it { should assign_to(:user){user} }

  end
end

应用程序控制器是这样的:

class ApplicationController < ActionController::Base
  protect_from_forgery

  def authenticated
    @user = nil
  end
end

我的问题是,当我运行测试我得到以下错误

1) ApplicationController user authenticated 
   Failure/Error: get :index
   ActionView::MissingTemplate:
     Missing template stub_resources/index with {:handlers=>[:erb,:rjs,:builder,:rhtml,:rxml,:haml],:formats=>[:html],:locale=>[:en,:en]} in view paths "#<RSpec::Rails::ViewRendering::PathSetDelegatorResolver:0x984f310>"

根据文档,视图不是rendered when running controller tests,但是这表示这个动作没有存根(这是可以理解的,因为视图不存在)

任何人都有一个线索,如何解决这个问题或存根的看法.

干杯
Colin G

解决方法

你不可以这样做:
render :nothing => true

里面的#index动作?

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...