我正在尝试在FlexUnit v0.9中使用callLater:
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不兼容?
发布于 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
发布于 2009-06-29 15:40:10
看起来你在期待一个事件,但没有得到一个事件。我想下面的代码会起作用。
public function testCallLater():void {
Application.application.callLater( addAsync(function(/*removed event declaration*/):void {
assertTrue(true);
}, 1000));
}发布于 2010-07-25 19:59:30
以防万一有人需要它,这是有效的:
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);
}https://stackoverflow.com/questions/1058950
复制相似问题