Как получить доступ к вспомогательному методу, когда я запускаю тест в рельсах? - PullRequest
1 голос
/ 09 декабря 2011

Я пишу тест для своей почтовой службы, внутри моего файла шаблона электронной почты я вызываю вспомогательный метод с именем: do_it, который определен внутри application_helper.rb

Однако, когда я запускаю свои тесты, онитерпеть неудачу, потому что вспомогательные методы не импортируются, я получаю следующее исключение:

NoMethodError: undefined method `do_it' 

Любая идея / предложения о том, как я могу импортировать вспомогательные методы в тесты?

Я использую:

require 'test_helper'

class NotifierTest < ActionMailer::TestCase

1 Ответ

1 голос
/ 09 декабря 2011

Помощник - это просто модуль, содержащий методы уровня экземпляра. RSpec дает вам способ получить доступ к этому по умолчанию в спецификациях Helper, которые генерируются автоматически, используя helper.x в блоке describe для помощника. Если вы не используете RSpec, может быть какой-то другой метод, предоставляемый вашей тестовой средой. Кроме того, вы можете смешать модуль с классом и протестировать экземпляр класса.

Где-то в настройках теста:

class ApplicationHelperTest; include ApplicationHelper; end
@helper = ApplicationHelperTest.new

И в вашем тесте:

assert @helper.do_it

Чтобы лучше решить вашу конкретную проблему, вам нужно включить помощника в класс, к которому вызывается метод. Например, скажем, класс Mailer:

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