У меня есть форма входа, и теперь я хотел бы провести интеграционный тест, чтобы увидеть, перенаправляется ли пользователь на другую страницу после успешного входа в систему.
За кулисами есть сервис авторизации, который запускает перезагрузку страницы через $window.location.href = 'home';
Сначала у меня было это:
it('should redirect to /home if credentials are correct', function(){
browser().navigateTo('/login');
input('credentials.username').enter('testuser');
input('credentials.password').enter('testpass');
element('button.login').click();
expect(browser().location().path()).toBe("/home");
});
но тест AngularJS не прошел и как Karma, и как бегун в браузере. Потом я подумал, что, может быть, expect
слишком рано, и добавил перед ним sleep(1)
. И тогда все было в порядке, и в тестовом прогончике я мог видеть обновление страницы перед утверждением.
Я предполагаю, что это могло бы работать лучше, если бы у меня было location().path('/home'), но я предпочитаю полную перезагрузку на этом шаге.
Есть ли какой-либо шаблон проектирования/тестирования, который следует использовать в таких случаях, поэтому мне не нужно помещать sleep() перед ожидаемым изменением местоположения?