2013-08-06 3 views
1

У меня есть форма для входа в систему, и теперь я хочу сделать интеграционный тест, чтобы узнать, перенаправлен ли пользователь на другую страницу после успешного входа в систему.Что такое хороший способ проверить изменение местоположения в тесте 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 тест не так - бежать как Кармы и в качестве бегуна в браузере. Тогда я подумал, что возможно expect слишком рано, и я добавил sleep(1) перед этим. И тогда все было хорошо, и в тестовом бегуне я мог видеть обновление страницы до утверждения.

Я предполагаю, что это может сработать лучше, если бы у меня было место(). Path ('/ home'), но я предпочитаю полную перезагрузку на этом этапе.

Есть ли какой-либо дизайн/тестовый шаблон, который должен использоваться в таких случаях, поэтому мне не нужно ставить sleep() перед ожидаемым изменением местоположения?

ответ

0

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

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'); 
});