문제

대부분의 XUnit 테스트 프레임 워크는 주어진 작업이 예외 (또는 AS3 의회에 오류가 발생한다고 주장하고 싶은 시간에 대한 주장을 제공하는 것 같습니다.) 내가 간과하는이 작업을 수행하는 "표준"방법이 있습니다. FlexUnit에 포함 된 AsserTerror () 어설 션이 없다고 설명할까요?

나는 그런 것을 구현하는 방법을 알고 있으며 아마도 내 플렉소니트에 추가 할 것입니다 (오픈 소스로 가십시오!).

누구든지 이것에 대한 생각이 있습니까?

도움이 되었습니까?

해결책

2010 년 5 월 2 일 편집 : 이제 사용하는 것이 좋습니다 FlexUnit 4. 확장 가능한 메다타 시스템을 사용하고 예상 예외 예외를 지원하며 공기를 사용하지 않고 통합 서버 환경에서 실행하는 지원도 지원합니다.

편집하다: 당신은 살펴 봐야합니다 플루인트, FlexUnit이 충분한 사람들에 의해 지어졌으며 한계가 있습니다. 이러한 유형의 주장이 내장되어있을 수 있습니다.

나는 완전히 동의합니다. 실제로 FlexUnit에는 몇 가지 유용한 방법 (Assertevent, AsserTarrayequals 등)이 누락되었습니다. 나는 당신이 그것을 구현하는 방법을 알고 있다고 말했지만 자유롭게 사용하십시오.

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;
}

다른 팁

FlexUnit 4는 Hamcrest-AS3와 잘 어울립니다. Hamcrest에는 오류 어설 션 매칭이 있습니다

이 어설 션 도구를 사용하는 것을 고려할 수 있습니다.

XXXUnit 프레임 워크를 대체하지 않고 만족하는 주장을 용이하게하고 영어와 코드를 적게 만듭니다.

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

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();

재미있게 보내세요 :)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top