필자는 전제 조건 (사용자 생성을 생각하십시오)을 설정하기 위해 라이브러리를 가져 오는 것으로 놀고 있습니다. 분도기는 약속 기반이고 magically does all the wrapping to keep things in order이므로, 나는 그 목적을 위해 약속을 사용하는 것을 생각했습니다. 약간의 샘플 코드를 작성했지만 관찰 된 동작을 설명 할 수 없기 때문에 누군가가 내가 무슨 일이 일어나는지 이해할 수 있도록 도와 줄 수 있습니다. 분도기 사용 약속 이해하기
function timeout(ms) {
var promise = protractor.promise.defer();
setTimeout(function() {
console.log('qwer');
promise.fulfill(true);
}, ms);
return promise.promise;
}
는 이제 함수는 (모든 코드는 가정으로 제어 흐름에 싸여지기로) 난 그냥과 같이 사용할 수있는 인라인으로 가정 할 약속,
describe('test', function() {
it('bla', function() {
browser.get('/');
timeout(5000);
$('some-element').click();
});
});
그러나이하지 않습니다를 반환 예상대로 작동합니다 (예 : console.log가 발생하지 않음). 해당 약속의 결과가 expect
인 경우에도 결과는 변경되지 않습니다. timeout(5000).then(done)
을 수행하여 실제로 명시 적으로 대기하는 경우 제한 시간은 완료되지만 해당 작업 (사이트가 열리고 요소가 클릭 된 후 5 초 후 제한 시간의 로그가 발생 함) 이후에 다음 작업이 대기열에 저장되지 않습니다.
그래서 모든 것이 순서대로 실행되고 관찰 된 동작이 함께 맞춰 지도록 제어 흐름을 사용한다고 주장하는 것이 정말 혼란 스럽습니다.
단지 두 달 후 나는 마침내 당신의 솔루션을 보았습니다. 그리고 그것은 작동합니다 ('''controlFlow()''')를 써야한다는 것을 제외하고). 정말 고마워 :) – FrankyBoy