Тестирование вспомогательных методов в Rails

Я тестирую свои вспомогательные методы rails следующим образом:

require File.dirname(__FILE__) + '/../../test_helper'
require 'action_view/test_case'
require 'action_view/helpers'

class ListingsHelperTest < ActionView::TestCase

  def setup
    @controller = ListingsController.new
    @request  = ActionController::TestRequest.new
    @response = ActionController::TestResponse.new
  end
end

Это прекрасно работает, за исключением случаев, когда помощники вызывают методы, требующие выполнения запроса, такие как url_for. Поскольку я не хочу запускать весь стек через процесс запроса, чтобы проверить их (например, вызвав get: index), что нужно будет инициализировать или заглушить, чтобы это сработало?

Я ищу более общее решение для издевательства над запросом, но, в частности, ошибка, которую я получаю, такова:

NoMethodError: You have a nil object when you didn't expect it!
The error occurred while evaluating nil.rewrite
rails/actionpack/lib/action_controller/base.rb:625
rails/actionpack/lib/action_view/helpers/url_helper.rb:85
rails/actionpack/lib/action_view/helpers/url_helper.rb:85

person Andrew Vit    schedule 19.02.2009    source источник


Ответы (1)


Я так думаю:

include ActionView::Helpers::UrlHelper
include ActionController::UrlWriter

может помочь?

person nitecoder    schedule 21.02.2009
comment
Это билет, спасибо! Я также только что понял, что этот метод, вероятно, будет виден в собственных вспомогательных тестах рельсов, верно? - person Andrew Vit; 22.02.2009