2015-01-13 6 views
3

필자는 각도기를 처음 사용하는 사람이 아니기 때문에 테스트 전에 언 로딩 할 때까지 페이지를 기다릴 수 없었습니다. 예 아래 :테스트하기 전에 서비스가 반환되기를 기다리는 각도기가 필요합니다.

 //in separate test page 
     it('should allow a valid user to login', function() { 
      expect(loginPage.login('[email protected]', '12345678')).toBe(true); 
     }); 

감사합니다 : 로그인에 성공하고 브라우저가 로그인 페이지에서 멀리 탐색 경우에도 아래의 테스트는 항상 실패 BU와 같이

//in loginPage object 
    function login(email, password) { 
     element(by.id('inputEmail')).sendKeys(email); 
     element(by.id('inputPassword')).sendKeys(password); 
     element(by.css('.btn.btn-primary')).click(); 
     browser.driver.sleep(4000); 
     return !(element(by.binding('userCtrl.labels.signIn()')).isPresent()); 
    } 

슬립 문,하지만 작동하지 않습니다 !

답변

3

각도기 동작 (예 : isPresent())은 기본 값이 아닌 약속을 반환합니다. 즉, 이것은 약속입니다 : element(by.binding('userCtrl.labels.signIn()')).isPresent()

이 부분을 읽으십시오. https://github.com/angular/protractor/blob/master/docs/control-flow.md.

이 통과해야

function login(email, password) { 
    element(by.id('inputEmail')).sendKeys(email); 
    element(by.id('inputPassword')).sendKeys(password); 
    element(by.css('.btn.btn-primary')).click(); 
    browser.driver.sleep(4000); 
    return element(by.binding('userCtrl.labels.signIn()')).isPresent(); 
} 

-

//in separate test page 
it('should allow a valid user to login', function() { 
    expect(loginPage.login('[email protected]', '12345678')).toBe(false); 
}); 

을 당신은 그것의 기본 가치에 대해 주장 할 수 있도록이 약속을 풀다되었다 않았다 기대.

+0

login이 성공하면 expect 문에서 true로 확인하고 그렇지 않으면 false로 해결하려면 login 함수 반환 값이 필요합니다. 귀하의 추론을 이해하고 언급 한 문제를 해결했지만 문제가 남아 있습니다. – fortesl

+0

이전 코멘트를 무시하십시오. 당신의 솔루션은 주어진 것과 똑같이 작동했습니다. 고맙습니다! – fortesl

관련 문제