Каков хороший способ проверить изменение местоположения в тесте AngularJS E2E

У меня есть форма входа, и теперь я хотел бы провести интеграционный тест, чтобы увидеть, перенаправляется ли пользователь на другую страницу после успешного входа в систему.

За кулисами есть сервис авторизации, который запускает перезагрузку страницы через $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() перед ожидаемым изменением местоположения?


person Edgar Zagórski    schedule 06.08.2013    source источник


Ответы (1)


Вы можете попробовать этот код;

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();
    browser().navigateTo('/home');
});
person BKM    schedule 28.10.2013