Frage

Aus irgendeinem Grund Verkettungs addAsync in einem Flexunit-Tests wie in dieser Artikel absolut nicht funktioniert, wenn ich versuche, es zu tun.

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);
}

Wenn ich diesen Test ausführen, wird verifyFirst genannt, aber verifySecond nicht. Ich gehe davon aus das ein Fehler in Flexunit ist ... ist es eine Abhilfe?

War es hilfreich?

Lösung

Ich habe einige mehr Forschung und festgestellt, dass dies in der Tat ein Problem bei Flexunit, die Fest in der nächsten Version. Die Abhilfe, die ich war gefunden stattdessen Application.application.callLater zu verwenden, um das zweite Ereignis zu versenden.

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")]);
}

Diese Frage wurde von einem Versuch, inspirierte den Zustand eines Objekts nach allem, was in Flashs Ereigniswarteschlange verarbeitet worden zu inspizieren. Ich entdeckte einen einfacheren Weg, dies mit EventDispatchers ohne Unordnung zu erreichen.

Machen Sie die folgenden nennen das Ende des ersten Teils des Tests, wenn Sie die Ereigniswarteschlange wollen verarbeitet werden.

Application.application.callLater(addAsync(phaseTwo, 1000, [ args ... ]), [null]);

Mit der phaseTwo Funktion die folgenden Signatur hat.

private function phaseTwo(e:Event, args:Array):void

e ein null Objekt übergeben werden. Dies ist notwendig, mit addAsync kompatibel zu sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top