문제

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과 호환되지 않습니까?

도움이 되었습니까?

해결책

먼저 FlexUnit 4.0으로 마이그레이션을 고려해야합니다. http://blogs.digitalprimates.net/codeslinger/index.cfm/2009/5/3/flexunit-4-in-360-seconds

둘째, Calllater는 시각 클래스의 다음 프레임까지 처리를 지연시키는 데 사용됩니다. 테스트 사례 클래스는 UICOMPONT를 확장하는 시각적 클래스가 아니므로 캘리포니아를 사용해 보지 않아야합니다.

셋째, AddAsync는 비동기 작업 결과를 테스트하는 데 사용됩니다. 이것은 일반적으로 네트워크 요청, 파일 읽기, 타이머 이벤트 등의 네트워크 요청 결과를 테스트하는 데 사용됩니다. 따라서 일반적으로 "이벤트"를 AddAsync 테스트 기능의 매개 변수로 표시하는 이유입니다 (비동기 요청은 이벤트를 사용하기 때문입니다. 프로세스 결과). 귀하의 경우 AddAsync 호출로 비동기 조작에 응답하지 않으므로 테스트 기능에서 이벤트를 찾지 않아야합니다. 이벤트 제거 : 이벤트 매개 변수가 있으면 오류가 사라집니다.

그러나 아마도이 질문을 다시 제출하여 달성하려는 것을 진술 할 수 있습니까? 귀하가 표시 한 코드 샘플은 실제로 유용한 작업을 수행하지 않습니다. 좀 더 구체적으로 할 수 있다면 더 나은 테스트 케이스를 작성하는 데 도움을 줄 수 있습니다.

이전 버전의 FlexUnit과 함께 addAsync를 사용하는 데 도움이 되려면이 자습서를 참조하십시오. 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