гибкий модуль обработки события клиента и Async.asyncHandler ()

Кто угодно знает, как Async.asyncHandler() работает и может ли Async.processOnEvent() использоваться только в методе [До]. (Любой знает какой-нибудь полезный документ, помимо http://docs.flexunit.org/).

Я определяю компонент MXML с именем HelloCompo (расширяет Vbox), а компонент определяет функцию с именем hello (), в hello () отправляет клиентское событие с именем HelloEvent (тип события просто называется «hello») и в другой функции с именем init () прослушал событие, я хочу проверить, правильно ли отправлено событие. Итак, у меня есть следующий тест:

var helloCompo = новый HelloCompo ();

helloCompo.hello();

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

Тест всегда запускает метод handleTimeOut (это означает, что HelloEvent не отправляется, но когда helloCompo.hello () запускается, он действительно прерывается, так что же происходит не так?)


person jason    schedule 27.11.2010    source источник


Ответы (2)


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"));
        }
    }
}
person Florian F    schedule 28.11.2010

Я думаю, вам нужно добавить прослушиватель событий перед вызовом hello () на самом деле

person Florian F    schedule 27.11.2010
comment
@pez. Извини не думаю - person jason; 28.11.2010
comment
Ага, мой плохой, ты прав. Я сделал быстрый тест, и он отлично работает. Вы уверены, что добавили свойство async в свой тег Test? - person Florian F; 28.11.2010
comment
Я поместил свойство async в тег Test. Что вы имеете в виду добавить слушателя evrnt перед вызовом hello () ?. Вы имеете в виду: helloCompo.addEventListener (), затем helloCompo.hello ()? но все равно не работает, так что можешь поставить свой код? - person jason; 28.11.2010
comment
хорошо, я дал новый ответ, потому что не смог опубликовать код в своем комментарии - person Florian F; 28.11.2010