FlexUnit和callLater

时间:2009-06-29 15:31:44

标签: flex flash actionscript-3 actionscript flexunit

我正在尝试将callLater与FlexUnit v0.9一起使用:

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不兼容吗?

3 个答案:

答案 0 :(得分:4)

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

其次,callLater用于将处理延迟到可视类中的下一帧。您的测试用例类不是扩展UIComponent的可视类,因此您不应该尝试使用callLater。

第三,addAsync用于测试异步操作的结果。这通常用于测试网络请求,文件读取,计时器事件等的结果。这就是为什么通常在addAsync测试函数中看到“event”作为参数的原因(因为异步请求使用事件来过程结果)。在您的情况下,您没有使用addAsync调用响应异步操作,因此您不应该在测试函数中查找事件。删除事件:事件参数,错误将消失。

然而,也许你可以重新说出这个问题来说明你想要完成的事情?您指出的代码示例并没有真正做任何有用的事情。如果您可以更具体一点,我们可以帮助您编写更好的测试用例。

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

答案 1 :(得分:2)

看起来你期待一个事件,但没有得到一个。我想以下代码可以工作。

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

答案 2 :(得分:2)

相关问题