如何在rspec中测试应用程序控制器(获取请求)?

时间:2012-09-19 15:45:41

标签: ruby-on-rails rspec

我想在我的应用程序控制器中测试一个get请求,我的规范如下:

describe "GET some_get_method" do 
     it "should work" do
       get :some_get_method
    end
  end

但是当我这样做时,我收到以下错误:

Failure/Error: get :some_get_method
     AbstractController::ActionNotFound:
       The action 'some_get_method' could not be found for ApplicationController

我的应用程序控制器如下:

def some_get_method
    vari = params[:vari]

    if !vari
      render_something
      return false
    end
    true
  end

在我的路线中,我有:

namespace :application do
    get 'some_get_method/', :action => :some_get_method
  end

1 个答案:

答案 0 :(得分:0)

ApplicationController直接用于功能测试可能不合适,因为您真正关心的是从它派生的控制器的行为。

但是,对于ApplicationController中的方法进行单元测试,您可以在spec文件中创建一个存根控制器(或者更恰当地说,一个测试帮助程序),除了在{中公开要测试的方法之外,什么都不做{1}}:

ApplicationController

您现在可以直接测试class StubController < ApplicationController end 的方法(真正的Stub方法),而无需尝试实例化抽象类。

设置路由

如果您需要测试渲染,一种方法可能是添加RSpec请求处理程序可访问的仅测试路径:

Application