2013-12-20 2 views
1

ВОПРОС Я нахожусь на Rails 3.2, и использую gems 'gon' и 'jasminerice'. Как я имитирую код контроллера, где я настраиваю данные gon, и как я могу гарантировать, что эти данные gon доступны для моих файлов javascript при тестировании через jasminerice?Как использовать gon с Jasminerice в Rails?

ANSWER Я действительно придумал решение самостоятельно и просто отправляю здесь, чтобы сэкономить время и разочарование. Первым шагом является создание «вспомогательного метода» (т. Е. Модуля SpecHelper, см. https://github.com/bradphelan/jasminerice), который настраивает gon-переменную таким образом, который имитирует код контроллера; назовем его «helper1». Второй шаг заключается в создании арматуре (убедитесь, чтобы загрузить его в спецификации через «loadFixtures»), который имеет заголовок следующим образом:

<head> 
    <% helper1() %> 
    <%= include_gon() %> 
</head> 

Ключ поставить вызов на вспомогательный метод перед тем строка 'include_gon'.

+0

Я не уверен, как это работает ... потому что файл fixture является файлом '.html', а не файлом' .html.erb', поэтому как он фактически интерполирует что-то вроде '<% = include_gon% > '? – james

ответ

-1

Если вам нужно касаться контроллера Rails в Жасмине, это неправильно.

Jasmin предназначен для модульного теста Javascript. Зависимости в модульном тесте должны быть сведены к минимуму. Смешивание логики сервера в экзамене переднего блока - большой НЕТ.

Лучшим подходом будет использование прибора или фабрики для предоставления необходимых данных/контекста.

Если вам нужно протестировать интеграцию, используйте Capybara, которая также не нуждается в таком взломе.

+0

Прибор фактически используется (второй шаг). Все, что я имел в виду под «кодом контроллера», было связано с подготовкой gon. – pdavidow

Смежные вопросы