سؤال

أي شخص يعرف كيف يفعل Async.asyncHandler() العمل وإذا Async.processOnEvent() لا يمكن استخدامها إلا في [قبل] الطريقة. (أي شخص يعرف بعض المستندات المفيدة إلى جانب http://docs.flexunit.org/).

أقوم بتحديد مكون MXML يدعى Hellocompo (يمتد Vbox) ، ويحدد المكون وظيفة تسمى Hello () ، في Hello () من حدث عميل يدعى Helloevent (نوع الحدث المسمى "Hello") ، وفي وظيفة أخرى مسماة init () استمعت للحدث ، أريد اختبار ما إذا كان الحدث قد تم إرساله بشكل صحيح أم لا. لذلك لدي الاختبار التالي:

var hellocompo = new Hellocompo () ؛

helloCompo.hello();

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

سيؤدي الاختبار دائمًا إلى إثارة طريقة handletimeout (تعني عدم إرسال helloevent ، ولكن عندما يكون Hellocompo.hello () excute ، فهي تتجاهل حقًا ، فما الخطأ الذي يحدث؟)

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

أعتقد أنك بحاجة إلى إضافة مستمع الحدث الخاص بك قبل الاتصال Hello () في الواقع

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top