Как получить дескриптор / ссылку на текущий объект контроллера внутри функционального теста рельсов? - PullRequest
1 голос
/ 24 марта 2010

Я, должно быть, упускаю что-то очень простое, но не могу найти ответ на этот вопрос. У меня есть метод с именем 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>

Вся документация по функциональным тестам описывает, как имитировать запрос http get для bar_controller, который затем запускает метод. Но я бы хотел запустить метод, не обращаясь к нему с запросом http get или post. Это возможно?

Внутри функционального теста должна быть ссылка на объект контроллера, но я все еще изучаю ruby ​​и rails, поэтому мне нужна помощь.

Ответы [ 2 ]

3 голосов
/ 24 марта 2010

Я нашел ответ в книге «Гибкая веб-разработка с Rails». ActionController :: TestCase инициализирует три переменные экземпляра, необходимые для каждого функционального теста: @controller (содержит проверяемый экземпляр контроллера), @request и @response.

0 голосов
/ 24 марта 2010

Вам нужно вызвать это действие с HTTP-глаголом, например

get :foo
post :foo

и т.д ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...