FlexUnit에 AsserTerror () 기능이없는 이유는 무엇입니까?
-
03-07-2019 - |
문제
대부분의 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();
재미있게 보내세요 :)