Pregunta

Por alguna razón, agregue el encadenamiento Async en una prueba de unidad flexible como se describe en este artículo no funciona en absoluto cuando intento hacerlo.

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

Si ejecuto esta prueba, se llama a generateFirst pero no se verifica aSegundo. Supongo que esto es un error en flexunit ... ¿hay alguna solución?

¿Fue útil?

Solución

Investigué un poco más y descubrí que esto es realmente un error en flexunit, que parece ser corregido en la próxima versión. La solución que encontré fue utilizar Application.application.callLater para enviar el segundo evento.

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

Esta pregunta se inspiró en un intento de inspeccionar el estado de un objeto después de que todo lo que se había procesado en la cola de eventos de Flash. Descubrí una forma más sencilla de lograr esto sin meterme con los EventDispatcher s.

Realice la siguiente llamada al final de la primera parte de la prueba cuando desee que se procese la cola de eventos.

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

Con la función phaseTwo que tiene la siguiente firma.

función privada phaseTwo (e: Event, args: Array): void

e recibirá un objeto null . Esto es necesario para ser compatible con addAsync .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top