Вот проблема, с которой я столкнулся. Есть код, над которым я работаю. Код в основном представляет собой типичный MVC, написанный на Rails с файлами представления Haml.
Одна часть приложения использует AngularJS для выполнения всех крутых MVC в браузере.
Здесь нет проблем.
Чтобы использовать эту часть приложения, пользователь должен войти в систему, и здесь появляется проблема:
Я заметил интересное следующее поведение:
Если я даю своему тесту указание перейти и посетить страницу входа (или любую другую) с помощью Chrome
beforeEach(function() {
browser().navigateTo('/help');
});
с тестом, который следует:
it('should scream for help', function() {
expect(element('#test').text()).toMatch('Help!');
});
и HTML
<div>
<h1>Help</h1>
<p id="test">Help!</p>
</div>
Что я получаю, так это зависший браузер, а остальная часть теста не выполняется. Теперь, как только я добавлю angular к элементу веб-сайта:
<div ng-app>
<h1>Help</h1>
<p id="test">Help!</p>
</div>
Тесты выполняются, как и ожидалось (и красный, и зеленый).
Проблема, которую это вызывает у меня, заключается в том, что я практически не знаю, как войти в систему моего пользователя (с чем-то вроде блока «прежде всего»), чтобы я мог с радостью выполнять свои тесты на функциональность angular.
Для вещей, не связанных с javascript, я использую RSpec и Capybara, где я могу удобно вызвать пользователя sign_in.
Кто-нибудь знает, как войти в систему (используя страницы, отличные от anguar)? Возможно, есть лучший способ справиться с этим тестом? Я думал об использовании PhantomJS, как вы можете видеть в эпизоде 391 Railscasts, но я хотел бы использовать инструменты, рекомендованные Google. Я не настолько умен, чтобы изобретать велосипед :).
Все советы высоко ценятся.