我想在我的应用程序控制器中测试一个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
答案 0 :(得分:0)
将ApplicationController
直接用于功能测试可能不合适,因为您真正关心的是从它派生的控制器的行为。
但是,对于ApplicationController
中的方法进行单元测试,您可以在spec文件中创建一个存根控制器(或者更恰当地说,一个测试帮助程序),除了在{中公开要测试的方法之外,什么都不做{1}}:
ApplicationController
您现在可以直接测试class StubController < ApplicationController
end
的方法(真正的Stub
方法),而无需尝试实例化抽象类。
设置路由
如果您需要测试渲染,一种方法可能是添加RSpec请求处理程序可访问的仅测试路径:
Application