Flex: 异步单元测试

在写单元测试的时候,测试事件的监听及处理是很常见的事情。对于Flex来说,写这样的异步测试代码可以参考官方文档Writing an AsyncTest。

不过个人认为,官方文档上的例子掺杂了一些非必需的内容(Timer的设置),使得在学习的时候容易受到误导,而一个好的示例应该是能够一目了然的。

一个简单的异步测试的例子:

[Test(async)]
public function testCaseFunc():void  
{
    var handler:Function = Async.asyncHandler(this, _eventHandler, 1000);
    _testObj.addEventListener(TEST_EVENT, handler);
    _testObj.someActionThatWillFire_TEST_EVENT();
}

private function _eventHandler(event:Event, passThroughObj:Object):void  
{
    assertThat(_testObj.testField, equalTo(_expectedValue));
}

究其实,就是把事件的监听处理函数用Async.asyncHandler封装起来调用,然后在事件的监听函数中进行assert操作。