J'exécute des tests FlexUnit via Ant. Le test test1
échoue avec le message "Timeout s'est produite avant l'événement attendu" mais test2
passe. La seule différence entre les deux tests est que l'un utilise UIImpersonator.addChild()
tandis que l'autre utilise FlexGlobals.topLevelApplication.addElement()
.UIImpersonator.addChild() ne distribue pas les bons événements
test1
échoue même si j'écoute l'événement "addedToStage"
. L'écoute de l'événement "added"
, cependant, fait passer test1
.
[Test(async, ui, description="Fails")]
public function test1():void
{
var c:UIComponent = new UIComponent;
Async.proceedOnEvent(this, c, FlexEvent.CREATION_COMPLETE);
UIImpersonator.addChild(c);
}
[Test(async, ui, description="Passes")]
public function test2():void
{
var c:UIComponent = new UIComponent;
Async.proceedOnEvent(this, c, FlexEvent.CREATION_COMPLETE);
FlexGlobals.topLevelApplication.addElement(c);
}
Qu'est-ce que UIImpersonator? Est-ce qu'il étend une application Flex? Ou est-ce un enfant d'une application Flex? Si non; alors votre «c» ne passera jamais par son processus Flex LifeCycle; et la création_Complete ne sera jamais déclenchée. – JeffryHouser
http://docs.flexunit.org/index.php?title=UIImpersonator Je pense que UIImpersonator peut être incompatible avec les nouvelles versions de Flex. – Ohas
Des sons comme UIImpersonator devraient fonctionner avec des composants Spark: http://forums.adobe.com/thread/905337 – JeffryHouser