У меня есть форма в приложении Rails, в которой используется подключаемый модуль jQuery tokenInput. Чтобы протестировать форму, я добавил полтергейст в качестве js-драйвера и добавил js: true
в спецификации. Однако, как только я включаю javascript для любой заданной спецификации, действие click_button
ничего не делает. Я поместил puts
в первую строку контроллера, и он никогда не выполняется.
Форма отлично работает как пользователь в браузере, и тест выполняется правильно без js: true
. Однако без включенного javascript я не могу использовать поле tokenInput
.
Нет сообщения об ошибке; если мой тест просто:
spec 'test something', js: true do
visit new_projects_path
click_button 'Create Project'
end
Это проходит; однако контроллер никогда не достигается.
Я получаю эти предупреждения каждый раз, когда запускаю спецификацию с полтергейстом:
2013-11-05 07:39:42.087 phantomjs[5629:507] * ПРЕДУПРЕЖДЕНИЕ. Метод userSpaceScaleFactor в классе NSView устарел в версии 10.7 и более поздних. Его не следует использовать в новых приложениях. Вместо этого используйте convertRectToBacking:. 2013-11-05 07:39:42.502 phantomjs[5629:507] Примечание по производительности CoreText: клиент вызвал CTFontCreateWithName(), используя имя «Times New Roman», и получил шрифт с именем PostScript «TimesNewRomanPSMT». Для лучшей производительности используйте только имена PostScript при вызове этого API. 2013-11-05 07:39:42.502 phantomjs[5629:507] Примечание о производительности CoreText: установите точку останова на CTFontLogSuboptimalRequest для отладки. 2013-11-05 07:39:42.588 phantomjs[5629:507] Примечание по производительности CoreText: Клиент вызвал CTFontCreateWithName(), используя имя «Times New Roman», и получил шрифт с именем PostScript «TimesNewRomanPSMT». Для лучшей производительности используйте только имена PostScript при вызове этого API. 2013-11-05 07:39:42.590 phantomjs[5629:507] Примечание по производительности CoreText: Клиент вызвал CTFontCreateWithName(), используя имя «Times New Roman», и получил шрифт с именем PostScript «TimesNewRomanPSMT». Для лучшей производительности используйте только имена PostScript при вызове этого API.
Я также попробовал спецификации с помощью capybara-webkit, и он умирал ужасной смертью всякий раз, когда нажимал кнопку формы. Он также никогда не попадал в контроллер.
Вот код для ProjectsController#new
= form_for project do |f|
%div.row
%div.large-3.columns
%label
%strong Name:
%div.large-6.columns
= f.text_field :name, { placeholder: "Name" }
%div.large-3.columns
%div.row
%div.large-3.columns
%label
%strong Description:
%div.large-6.columns
= f.text_area :description, { placeholder: "Description", class: "long" }
%aside.instruction
This field accepts Markdown formatted text
%div.large-3.columns
%div.row
%div.large-3.columns
%label
%strong Short Description:
%div.large-6.columns
= f.text_area :short_description, { placeholder: "Short Description", class: "short"}
%div.large-3.columns
%div.row
%div.large-3.columns
%label
%strong Source:
%div.large-6.columns
=f.text_field :source, { placeholder: "Link to source or \"Closed\"" }
%div.large-3.columns
%div.row
%div.large-3.columns
%label
%strong Technologies:
%div.large-6.columns
= f.text_field :technology_tokens, data: { load: @project.technologies }
%div.large-3.columns
%div.row
%div.large-6.large-centered.small-6.small-centered.columns
= f.submit
Руби 2, Рельсы 4, ОС Х Маверикс