Как узнать, выполнен ли angular.js рендеринг шаблона для текущего маршрута

я хотел бы использовать Behat для тестирования моего приложения angular.js. Но проблема, с которой я сталкиваюсь, заключается в том, что когда вы идете по маршруту и ​​хотите щелкнуть ссылку, Behat не знает, когда отображается шаблон, поэтому иногда он щелкает, когда содержимое недоступно. Кто-нибудь, у кого есть опыт тестирования приложения angular.js с использованием Behat?

Или кто-нибудь знает, как можно проверить в javascript, выполнен ли рендеринг шаблона текущего маршрута? И как проверить, выполняется ли angular.js загрузка приложения при загрузке страницы?

Я знаю, что в angular.js есть ngScenario, но я хочу использовать Behat, потому что:

  • Язык корнишонов, понятный человеку
  • Наш бэкенд написан на Symfony, поэтому мы можем использовать один и тот же фреймворк для тестирования обоих

с уважением,

Даан


person Daan Poron    schedule 26.07.2013    source источник


Ответы (1)


Mink API имеет метод wait, который позволяет вам приостановить выполнение ваших PHP-контекстов, пока ваше javascript-приложение не закончит обработку «чего-то». В документации есть простой пример: http://mink.behat.org/#basic-browser-interaction

$session->wait(5000,
    "$('.suggestions-results').children().length > 0"
);

В приведенном примере контекст PHP будет приостановлен на срок до 5 секунд, пока не будет заполнен список результатов предложения. Вам нужно будет установить эквивалентное выражение javascript, которое установит, когда ваш маршрут завершит рендеринг.

В прошлом у нас были некоторые проблемы с использованием выражений jQuery, и мы вернулись к собственным методам браузера, таким как getElementById.

Вам также понадобится драйвер mink, способный выполнять javascript. Мы используем ZombieDriver, так как он запускается в командной строке. Есть несколько альтернатив, которые могут подойти вам лучше.

http://mink.behat.org/#разные-браузеры-драйверы

person Rob Squires    schedule 29.07.2013
comment
Только что столкнулся с похожей проблемой, и было высказано предположение, что ожидание не очень хорошее решение, поскольку оно всегда исправлено, и вы никогда не знаете, когда страница отображается. Решение на gediminasm.org/post/behat-sleep-alternative кажется намного лучше, нужно посмотреть, как включить это во все правила Behat - person rajasaur; 05.10.2013