저는 현재 회사가 개발중인 AngularJS 앱을 테스트하기 위해 각도기를 사용하여 일련의 테스트를 개발 중입니다. 현재 테스트를 통과했지만 그 중 하나에서 오류가 발생하지만 이유를 파악할 수 없습니다 ... 오류 메시지가 표시됩니다.각도기를 사용한 각도 검사 - 재스민 사양이 '기대치'절의 시간 초과로 나타납니다. WebDriver 제어 흐름 다시 설정?
재스민 사양이 초과되었습니다. WebDriver 제어 흐름 재설정.
오류 메시지가 콘솔에 표시하기 위해 다음과 같은 두 가지 테스트 스크립트의 첫 번째, 다음 물건의 실행의 끝 부분에 표시됩니다 두 번째 테스트의 시작부터 console.log()
성명 :
spec.js
파일에 정의되어 있습니다 -
browser.call(closeDlg);
:이 두 가지 테스트 스크립트의 첫 번째 내부
it('should navigate to the Charts page', function() {
console.log("Start Charts page test");
browser.waitForAngularEnabled(false);
browser.actions().mouseMove(chartsMenuBtn).perform();
chartsMenuBtn.click();
browser.waitForAngularEnabled(true);
browser.call(closeDlg);
expect(browser.getCurrentUrl()).toBe(VM + '/#/charts');
});
/*Test that 'Export' menu item works correctly */
it('should navigate to the Export page', function() {
console.log("Start Export page test");
browser.waitForAngularEnabled(true); //false);
browser.actions().mouseMove(exportMenuBtn).perform();
exportMenuBtn.click().then(function(){
console.log("End Export page test (then call)");
expect(browser.getCurrentUrl()).toBe(VM + '/#/export');
});
console.log("End Export page test");
});
, 나는 선을 사용하여 함수 closeDlg()
를 호출하고
및이 함수의 모든 console.log()
문이이 함수의 모든 코드가 예상대로 실행됨을 나타내는 콘솔에 표시됩니다.
이 줄은 expect(browser.getCurrentUrl()).toBe(VM + '/#/charts');
줄에 시간 초과가 발생하고 있지만이 줄이 실행될 때의 현재 URL을 테스트 스크립트가 실행되는 브라우저에서 볼 수 있습니다. 라인 closeDlg의
종료() 함수
후
는 타임 아웃이 라인이 있다고 제안하는 발생했을 때 그건의 closeDlg()
함수의 콘솔로 인쇄됩니다 :
expect(browser.getCurrentUrl()).toBe(VM + '/#/charts');
스크립트가 시간 초과되는 원인은 실행될 다음 행이기 때문입니다.
테스트 스크립트 내의 여러 위치에서 browser.waitforAngularEnabled(true);
&설정을 시도했지만 아무 것도 해결되지 않았거나 전혀 시간 초과 오류가 발생하지 않았습니다.
아무에게도 내가 왜 이것을 얻고있는 제안이 있습니까? 어떻게 해결할 수 있습니까?
Ok ... [지난 금요일의 [이 사람]과 같은 질문입니다. (https://stackoverflow.com/questions/46973496/angularjs-testing-with-protractor-executing-asynchronous-scripts) . WaitForAngularEnabled()를 무작위로 켜고 끄는 것은 전혀 이해가되지 않습니다 ... 귀하의 페이지가 AngularJS이고 그 페이지에서 작동하거나 그렇지 않습니다. 또한'browser.call()','console'과'.then()'의 사용법은 분개 자나 자바 스크립트의 튜토리얼을 전혀 읽지 않은 것처럼 보입니다. 필자의 관점에서 볼 때 ControlFlow를 테스트하는 방식은 예측할 수없는 결과를 가져온다. 팁 : 튜토리얼을 먼저! –
의견을 보내 주셔서 감사합니다. 나는 이것이 마지막 문제를 고쳤다는 사실 때문에 다른 문제라고 생각했다. 그러나, 내 테스트를 통해 살펴보면 이번에는'Export page' 테스트에서'browser.waitForAngularEnabled (true); '줄로 인해 문제가 발생한 것으로 보입니다. 이것을'false'로 바꾸면 테스트가 끝납니다. – someone2088
나는 그것이 당신을 위해 일해서 다행이다. 나는 혼란 스럽다. 게시 한 지 1 시간도 채되지 않아서 자신의 해결책을 찾았다. 제안 된 코드도 확인하십시오. 훨씬 작고 덜 복잡하고 훨씬 안정적입니다. 제가 말씀 드리고자하는 것은, 여러분의 수정이 단지 몇 줄 뒤의 다음 문제로 이어질 것이라는 것입니다. 왜냐하면 분도기가 페이지와 무작위로 동기화되도록했기 때문에 몇 줄 밖에 남지 않았습니다. 다시 동기화하면 새로운 질문을 올릴 수 있습니다. –