代码之家  ›  专栏  ›  技术社区  ›  Upgradingdave

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

  •  1
  • Upgradingdave  · 技术社区  · 14 年前

    我一定漏掉了一些很简单的东西,但找不到答案。我有一个方法叫 foo 里面 bar_controller . 我只想从函数测试内部调用该方法。

    这是我的控制器:

    class BarsController < ApplicationController
      def foo
        # does stuff
      end
    end
    

    这是我的功能测试:

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

    当我运行测试时,我得到:

    NameError: undefined local variable or method `foo' for #<BarsControllerTest:0x102f2eab0>
    

    所有关于功能测试的文档都描述了如何模拟对bar_控制器的http get请求,然后该控制器运行该方法。但我只想运行该方法,而不使用http get或post请求来访问它。有可能吗?

    功能测试中必须有对controller对象的引用,但我仍在学习ruby和rails,因此需要一些帮助。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Upgradingdave    14 年前

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

        2
  •  0
  •   shingara    14 年前

    您需要使用http动词类调用此操作

    get :foo
    post :foo
    

    等。。。