2010-11-27 2 views
3

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

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

var helloCompo = new HelloCompo();

helloCompo.hello(); 

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

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

ответ

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

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

+0

@pez. Извините, я так не думаю – jason 2010-11-28 10:41:16