Почему мой тест RSpec + Capybara не отображает вид? - PullRequest
0 голосов
/ 18 мая 2018

Я использую wicked (1.3.1) (не уверен, если уместно) для входящего потока на моем рельсе 5 приложение.На последнем шаге моего процесса регистрации есть ссылка <a>, которая переходит на user#dashboard page.

Это прекрасно работает во всех браузерах.По какой-то причине этот переход не работает в Капибаре (rspec 3.7, rspec-rails 3.7.2, Капибара 2.14).URL-адрес в автоматизированном браузере изменяется на нужный маршрут, но страница не отображает никакого содержимого, она сохраняет старое представление.Визуально, как будто кто-то набрал URL-адрес, но не нажал return, тем не менее, метод контроллера и представление становятся затронутыми, когда я их отлаживаю.Похоже, они возвращают рендеринг, но значение не отображается в браузере

Если после теста <a> я бросаю сон в моем тесте, я могу вручную щелкнуть по строке URL-адреса и нажать клавишу возврата (дляперейдите к правильному URL), и страница будет отображаться.Но не сам по себе.Кто-нибудь испытывал это раньше?

Я попытался изменить href на другой путь, чтобы увидеть, если это проблема с целевым представлением / контроллером - это не так, случается со всеми путями, которые я пробую.Я также пробовал разные драйверы капибары: :selenium, :chrome, :poltergeist.Все тот же результат!

Хотел бы предоставить больше деталей, но я не уверен, что показать.Это простая ссылка, и я не уверен, что может пойти не так.

Приветствия

РЕДАКТИРОВАТЬ: оказывается, произошла ошибка в журналах.Будет обновление с решением.

ошибка:

Could not log "render_template.action_view" event. NoMethodError: undefined method `render_views?' for RSpec::ExampleGroups::LayoutsSplash::View:Class ["/Users/mitchellmeyer/.rvm/gems/ruby-2.3.1/gems/rspec-core-3.6.0/lib/rspec/core/example_group.rb:732:in `method_missing'",

1 Ответ

0 голосов
/ 19 мая 2018

Ошибка, отображаемая в журналах, является известной проблемой rspec / rspec-rails 3.6 - обновление исправит это.Кроме того, тот факт, что он работает, когда URL-адрес передается в браузер вручную, а не при нажатии на ссылку, указывает на то, что JS, вероятно, мешает ссылке.Скорее всего, это Turbolinks, которые вы можете отключить для данной ссылки, добавив к ней атрибут data-turbolinks=“false”.Если это исправляет поведение (которое, как вы утверждаете), вероятно, у вас есть ошибка JS в одном из ваших файлов.Проверьте консоль разработчика в браузере на наличие ошибок и исправьте их.

Поскольку вы упоминаете Poltergeist, в качестве драйвера, который вы пробовали, в вашем вопросе могут быть тихие ошибки, которые приводят к сбою JS при его использовании, поскольку он не поддерживает ничего, кроме ES 5.1, так что это не совсем так.это больше подходит для тестирования современных веб-приложений, и я бы рекомендовал придерживаться хрома без головы, если вам нужно тестирование без головы.

...