작은 AngularJS 앱으로 각도기를 테스트하고 있습니다.
이
테스트입니다 :describe('Testing Protractor', function() {
var draftList;
it('should count the number of drafts', function() {
browser.get('#/');
draftList = element.all(by.repeater('newsletter in drafts'));
expect(draftList.count()).toEqual(2);
});
});
컨트롤러 :
angular.module('myApp.controllers', []).
controller('DraftsCtrl', ['$scope', 'Draft', function($scope, Draft) {
$scope.drafts = Draft.query();
}])
초안 서비스 :
:angular.module('myApp.services', ['ngResource']).
factory('Draft', ['$resource',
function($resource) {
return $resource('api/drafts/:id')
}])
다음과 같은 오류에 각도기 결과를 사용하여이 테스트를 실행 53,210
그러나, 컨트롤러에서 나는이 라인을 변경하면이에
$scope.drafts = Draft.query();
을 :
$scope.drafts = [];
더 중요한 것은 예상하지만, 같은 시험은 실패가 시간 초과되지 않습니다.
브라우저에서 앱을 수동으로 실행할 때와 각도기로 열린 브라우저 창을 볼 때 API에서 반환 한 데이터가 리피터에 의해 올바르게 표시됩니다.
서비스가 API와 통신 할 때 각도기가 페이지와 동기화 할 수없는 이유는 무엇입니까?
AngularJS는 v1.2.0-rc3입니다. 각도기는 v0.12.0입니다.
감사합니다, 나중에 이것을 시도하고 당신이 그것을 작동 여부를 알려 드리겠습니다. 여기에 글을 올리기 전에 실제로 GitHub 문제를 읽었지만, 테스트 애플 리케이션이하지 않는 API를 정기적으로 폴링 할 때 해결 방법 만 필요하다는 인상하에있었습니다. 컨트롤러가 초기화되면 API 요청을 한 번만 보냅니다. –
이것은 실제로 올바른 해결책이었습니다. Protractor 0.12.0이 Protractor의 인스턴스를'browser'로 드러내 기 때문에,'element.all (by.repeater ('...')); '앞에'browser.ignoreSynchronization = true;'를 추가하면됩니다. –
완벽하게 작동합니다! – softvar