首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FlexUnit和callLater

FlexUnit和callLater
EN

Stack Overflow用户
提问于 2009-06-29 15:31:44
回答 3查看 4.1K关注 0票数 0

我正在尝试在FlexUnit v0.9中使用callLater:

代码语言:javascript
复制
public function testCallLater():void {
   Application.application.callLater( addAsync(function():void {
      assertTrue(true);
   }, 1000));
}

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

代码语言:javascript
复制
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不兼容?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-06-29 15:44:17

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

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

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

然而,也许你可以重新表述这个问题来说明你试图实现的目标?您所指出的代码示例实际上并没有做任何有用的事情。如果你能更具体一点,我们可以帮你写出更好的测试用例。

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

票数 4
EN

Stack Overflow用户

发布于 2009-06-29 15:40:10

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

代码语言:javascript
复制
public function testCallLater():void {
   Application.application.callLater( addAsync(function(/*removed event declaration*/):void {
      assertTrue(true);
   }, 1000));
}
票数 2
EN

Stack Overflow用户

发布于 2010-07-25 19:59:30

以防万一有人需要它,这是有效的:

代码语言:javascript
复制
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);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1058950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档