3

誰もがどのように機能し、[Before]メソッドでのみ使用できるかを知っています(http://docs.flexunit.org/以外の役立つドキュメントを知っている人はいAsync.asyncHandler()ますAsync.processOnEvent()

HelloCompo(extends Vbox)という名前のMXMLコンポーネントを定義し、コンポーネントは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()が実行されると、実際に無効になります。何が問題になっていますか?)

4

2 に答える 2

6
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"));
        }
    }
}
于 2010-11-28T13:26:53.963 に答える
2

実際にhello()を呼び出す前に、イベントリスナーを追加する必要があると思います

于 2010-11-27T13:42:43.650 に答える