Domanda

Uno sa come funziona e se Async.asyncHandler() Async.processOnEvent() può essere utilizzata solo nel metodo [Prima]. (Uno sa qualche documento utile oltre http://docs.flexunit.org/ ).

Mi definisco un componente MXML di nome HelloCompo (estende Vbox), e il componente definire una funzione denominata ciao (), nel ciao () dispacthed un evento dedicato ai clienti di nome HelloEvent (il tipo di evento appena nominato "ciao"), in un'altra funzione denominata init () ascoltato per l'evento, voglio verificare se l'evento viene inviato correttamente o meno. Così ho il test seguente:

var = helloCompo nuova HelloCompo ();

helloCompo.hello();

helloCompo.addEventListener("hello", Async.asyncHandler(this, handleHello, 1000, null, handleTimeOut));

Il test sarà sempre excute il metodo handleTimeOut (mezzi il HelloEvent non viene inviato, ma quando helloCompo.hello () excute, davvero dispacthed, quindi cosa c'è di sbagliato?)

È stato utile?

Soluzione

package flexUnitTests
{
    import flash.events.Event;

    import org.flexunit.asserts.assertTrue;
    import org.flexunit.asserts.fail;
    import org.flexunit.async.Async;

    public class HelloTest
    {       
        private var helloCompo:HelloCompo;

        [Before]
        public function setUp():void
        {
            helloCompo = new HelloCompo();
        }

        [After]
        public function tearDown():void
        {
            helloCompo = null;
        }

        [Test(async)]
        public function testHello():void
        {
            var handler:Function = Async.asyncHandler(this, helloHandler, 300, null, helloFailed);
            helloCompo.addEventListener("hello", handler);
            helloCompo.hello();
        }

        private function helloHandler(event:Event, passThroughObject:Object):void
        {
            //assert somthing
        }

        private function helloFailed(event:Event, passThroughObject:Object):void
        {
            fail("hello not dispatched");
        }


    }
}

HelloCompo.as

package
{
    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.IEventDispatcher;

    public class HelloCompo extends EventDispatcher
    {
        public function HelloCompo(target:IEventDispatcher=null)
        {
            super(target);
        }

        public function hello():void
        {
            dispatchEvent(new Event("hello"));
        }
    }
}

Altri suggerimenti

Penso che è necessario aggiungere la listener di eventi prima di chiamare ciao () in realtà

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top