Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails功能测试中获取当前控制器对象的句柄/引用?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在rails功能测试中获取当前控制器对象的句柄/引用?

Ruby on rails 如何在rails功能测试中获取当前控制器对象的句柄/引用?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我一定错过了一些非常简单的东西,但找不到答案。我在bar\u控制器中有一个名为foo的方法。我只想从函数测试内部调用该方法 这是我的控制器: class BarsController < ApplicationController def foo # does stuff end end class BarsController

我一定错过了一些非常简单的东西,但找不到答案。我在
bar\u控制器
中有一个名为
foo
的方法。我只想从函数测试内部调用该方法

这是我的控制器:

class BarsController < ApplicationController
  def foo
    # does stuff
  end
end
class BarsController
下面是我的功能测试:

class BarsControllerTest << ActionController::TestCase
  def "test foo" do
    # run foo
    foo
    # assert stuff
  end
end

class BarsControllerTest您需要使用类似HTTP动词的方式调用此操作

get :foo
post :foo

等等。

我在“使用Rails进行敏捷Web开发”一书中找到了答案。TestCase初始化每个功能测试所需的三个实例变量:@controller(包含被测控制器的实例)、@request和@response

啊,我想我现在明白了。我来自java背景。那么,我猜控制器就像servlet?通常,服务器容器实例化servlet,rails服务器实例化控制器,因此必须通过http访问控制器。ControllerTest将对象包装在rails堆栈中。你好像提出了这个要求。在您拥有request和response object.hi shingara之后,我能够使用@controller获得控制器实例。谢谢你的帮助。
get :foo
post :foo