2009-03-03 5 views
4

대부분의 XUnit 테스트 프레임 워크는 주어진 작업이 예외 (또는 AS3 용어로 오류)를 발생시킬 것이라는 주장을하고 싶을 때 어설 션을 제공하는 것으로 보입니다.이 작업을 수행하는 몇 가지 표준 방법이 있습니까? FlexUnit에 포함 된 assertError() 어설 션이 없다는 것을 설명 할 수 있습니까?FlexUnit에서 assertError() 함수가없는 이유는 무엇입니까?

나는 그런 것을 구현하는 방법을 알고 있으며 아마도 FlexUnit (오픈 소스로 이동)에 추가 할 것입니다.하지만 내가 그렇게하고 있는지 궁금하게 생각한 그러한 눈부신 누락처럼 보입니다. 잘못된.

누구든지이 문제에 대해 알고 있나요?

답변

5

편집 05/02/2010 : 이제 FlexUnit 4을 사용하는 것이 좋습니다. 확장 가능한 메타 데이터 시스템을 사용하고 예상되는 예외를 지원하며 AIR를 사용하지 않고 통합 서버 환경에서 실행하는 것을 지원합니다.

편집 : 당신은는 FlexUnit을 충분히 가지고 사람들에 의해 만들어진 fluint 한 번 봐,이 있어야하고 한계입니다. 이러한 유형의 어설 션이 내장되어있을 수 있습니다.

전적으로 동의합니다. 사실, FlexUnit에는 몇 가지 유용한 메소드 (assertEvent, assertArrayEquals 등)가 없습니다. 나는 당신이 당신이 그것을 구현하는 방법을 알고 말했다 알고 있지만, 내 자유롭게 사용 : hamcrest-AS3와 4 명 동료 잘

public static function assertError(message : String, func : Function, errorClass : Class = null, errorMessage : String = null, errorCodes : Array = null) : Error 
{ 
    _assertionsMade++; 

    if (errorClass == null) errorClass = Error; 

    try 
    { 
     func(); 
    } 
    catch(ex : Error) 
    { 
     if (!(ex is errorClass)) 
     { 
      fail("Expected error of type '" + getQualifiedClassName(errorClass) + "' but was '" + getQualifiedClassName(ex) + "'"); 
     } 

     if (errorMessage != null && ex.message != errorMessage) 
     { 
      fail("Expected error with message '" + errorMessage + "' but was '" + ex.message + "'"); 
     } 

     if (errorCodes != null && errorCodes.indexOf(ex.errorID) == -1) 
     { 
      fail("Expected error with errorID '" + errorCodes.join(" or ") + "' but was '" + ex.errorID + "'"); 
     } 

     return ex; 
    } 

    if (message == null) 
    { 
     message = "Expected error of type '" + getQualifiedClassName(errorClass) + "' but none was thrown" 
    } 

    fail(message); 

    return null; 
} 
1

는 FlexUnit을. hamcrest에 오류 어설 션 matcher가 있습니다.

0

이 어설 션 도구를 사용하는 것이 좋습니다.

xxxunit 프레임 워크를 대체하지 않고 사용자가 만든 어설 션을 용이하게하여 더 많은 영어와 코드를 작성하십시오.

var p:Person = new Person(); 

//assume a method p.sayHi() 
p.sayHi.should().throwError('name is not set'); 

p.name = "Radagast"; 
p.sayHi.should().not.throwError(); 

https://github.com/osher/should.as

재미 되세요 :)

관련 문제