FlexUnit AddAsync 체인
-
03-07-2019 - |
문제
어떤 이유로 든, leflasync chaining in flexunit 테스트에 설명 된대로 이 기사 내가 시도 할 때 완전히 일하지 못합니다.
public function testWhatever():void {
var cont:EventDispatcher = new EventDispatcher();
cont.addEventListener("continue", addAsync(verifyFirst, 1000));
cont.dispatchEvent(new Event("continue"));
}
private function verifyFirst(e:Event):void {
var cont:EventDispatcher = new EventDispatcher();
cont.addEventListener("continue", addAsync(verifySecond, 1000));
cont.dispatchEvent(new Event("continue"));
}
private function verifySecond(e:Event):void {
assertTrue(true);
}
이 테스트를 실행하면 verifyfirst가 호출되지만 verifysecond는 그렇지 않습니다. 이것이 FlexUnit의 버그라고 가정합니다 ... 해결 방법이 있습니까?
해결책
나는 더 많은 연구를했고 이것이 실제로 FlexUnit의 버그라는 것을 알았습니다. 결정된 다음 릴리스에서. 내가 찾은 해결 방법은 대신 사용하는 것이 었습니다 Application.application.callLater
두 번째 이벤트를 파견합니다.
private function verifyFirst(e:Event):void {
var cont:EventDispatcher = new EventDispatcher();
cont.addEventListener("continue", addAsync(verifySecond, 1000));
Application.application.callLater(cont.dispatchEvent,
[new Event("continue")]);
}
이 질문은 Flash의 이벤트 큐의 모든 것이 처리 된 후 물체의 상태를 검사하려는 시도에서 영감을 얻었습니다. 나는 엉망없이 이것을 달성하는 더 간단한 방법을 발견했습니다. EventDispatcher
에스.
이벤트 큐를 처리하려면 테스트의 첫 번째 부분의 끝을 다음에 전화하십시오.
Application.application.callLater(addAsync(phaseTwo, 1000, [
args ...]), [null]);
이랑 phaseTwo
다음 서명을 갖는 기능.
private function phaseTwo(e:Event, args:Array):void
e
통과됩니다 null
물체. 이것은 호환되는 데 필요합니다 addAsync
.
제휴하지 않습니다 StackOverflow