我试图使用与使用callLater V0.9的FlexUnit:

public function testCallLater():void {
   Application.application.callLater( addAsync(function():void {
      assertTrue(true);
   }, 1000));
}

但它运行时,我得到这个错误:

ArgumentError: Error #1063: Argument count mismatch on flexunit.framework::AsyncTestHelper/handleEvent(). Expected 1, got 0.
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8628]
at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8568]

我不知道是什么问题。是使用callLater不兼容的FlexUnit?

有帮助吗?

解决方案

首先,你真的应该考虑迁移到的FlexUnit 4.0:的 http://blogs.digitalprimates.net/codeSlinger/index.cfm/2009/5/3/FlexUnit-4-in-360-seconds

其次,使用callLater旨在被用于延迟处理,直到在可视类的下一帧。你的测试用例类是不延长UIComponent视觉类,所以你不应该尝试使用使用callLater。

第三,addAsync是用于测试异步操作的结果。这通常是在测试的网络请求的结果,文件读取,定时器事件等那就是为什么通常你看到一个“事件”作为addAsync测试函数中的参数(因为异步请求使用事件的使用处理结果)。在你的情况,你没有响应异步操作与addAsync通话,因此,你不应该期待在您的测试功能的事件。删除事件:事件参数和错误就会消失

不过,也许你可以重新词组这个问题说明你正在试图完成什么?您所指定的代码示例是不是真的做任何有用的事情。如果你能成为一个更具体一点,我们可以帮你写一个更好的测试用例。

有关使用addAsync与旧版本的FlexUnit的帮助,请参见本教程: http://life.neophi.com/danielr/2007/03/asynchronous_testing_with_flex.html

其他提示

它看起来像你期待的事件,但没有得到一个。我想象下面的代码会工作。

public function testCallLater():void {
   Application.application.callLater( addAsync(function(/*removed event declaration*/):void {
      assertTrue(true);
   }, 1000));
}

万一有人需要它,这个作品:

private function testCallLater():void {
    Application.application.callLater(doCallLater, [ addAsync(funcUnderTest, 1000) ]);
}

private function doCallLater(testFunc:Function):void {
    testFunc(null);  // Dummy arg necessary because of addAsync expecting one arg
}

private function funcUnderTest(e:Object = null):void {
    assertTrue(true);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top