2016-09-27 2 views
7

로컬 (directConnect : true)에서 로컬로 실행되는 각도기 테스트를 사용하고 있지만 원격 Selenium 서버 (Grid)에서 실행하려고하면 항상 다음과 같은 메시지가 표시됩니다. 메시지.원격 셀렌 서버에서 각도기 테스트를 실행할 때 Jasmine spec timeout

A Jasmine spec timed out. Resetting the WebDriver Control Flow. 

의 실패에 메시지를 찾고 및 스택은 내 모든 테스트 케이스에 대해 다음 표시 :

Message: 
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
Stack: 
    Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 
    at Timer.listOnTimeout (timers.js:92:15) 

내가 같은 자스민 시간 제한 간격을 증가 같은 것들의 숫자를 시도했습니다 추가 conf에 대한 getPageTimeout 및 allScriptsTimeout과 같은 이전 제한 시간이지만 재스민 시간 초과 오류가 발생합니다. 로그에 다음 오류가 표시됩니다.

00:03:18.328 INFO - Done: [execute async script: try { return (function (rootSelector, ng12Hybrid, callback) { 
var el = document.querySelector(rootSelector); 

try { 
    if (!ng12Hybrid && window.getAngularTestability) { 
    window.getAngularTestability(el).whenStable(callback); 
    return; 
    } 
    if (!window.angular) { 
    throw new Error('window.angular is undefined. This could be either ' + 
     'because this is a non-angular page or because your test involves ' + 
     'client-side navigation, which can interfere with Protractor\'s ' + 
     'bootstrapping. See http://git.io/v4gXM for details'); 
} 
    if (angular.getTestability) { 
    angular.getTestability(el).whenStable(callback); 
} else { 
     if (!angular.element(el).injector()) { 
    throw new Error('root element (' + rootSelector + ') has no injector.' + 
     ' this may mean it is not inside ng-app.'); 
    } 
    angular.element(el).injector().get('$browser'). 
     notifyWhenNoOutstandingRequests(callback); 
} 
} catch (err) { 
callback(err.message); 
} 
}).apply(this, arguments); } 
catch(e) { throw (e instanceof Error) ? e : new Error(e); }, [body, false]]) 

내 응용 프로그램이 각도로 표시되어 있으며 로컬로 실행 중일 때 성공적으로 실행됩니다. 나는 (이 아니라 html 태그 안에, 내 NG-앱이 몸에없는 BC)뿐만 아니라 conf의에서

rootElement='html#ng-app' 

설정,

browser.ignoreSynchronization = true 

설정을 시도했습니다. 프레임 워크는 'jasmine2'를 시도했지만 'jasmine'으로 설정되었지만 차이가없는 것으로 보입니다. 원격 서버에서 firefox를 시작할 수 있으며 UI가 시작된 firefox 세션을 보여줍니다. 그러나 그것은 단지 시간 초과가 발생할 때까지 거기에 앉는다. 모든 입력을 부탁드립니다!

답변

2

재 스민은 비동기 프로세스가 실행 중이고 해당 프로세스가 완료되어야 할 때 (실행중인 다른 테스트를 계속 진행할 때) 알아야합니다.

비동기 작업이 해결되면 done을 Jasmine 비동기 메서드 콜백에 ​​전달하고 done()을 호출하여 얻습니다.

done()에 전화하지 않으면 Jasmine에 시간 초과 오류가 표시됩니다. 나는 이것이 당신의 문제를 해결해야한다고 생각합니다.

여기에 자세한 정보 : Mocking ngResource in Angular unit tests.

희망이 도움이됩니다.

관련 문제