2009-03-03 14 views
4

Es scheint, dass die meisten XUnit-Test-Frameworks Assertions für die Zeiten bereitstellen, in denen Sie eine Ausnahme (oder einen Fehler im AS3-Sprachgebrauch) auslösen wollen. Gibt es eine "Standard" -Methode, die ich übersehen habe? , was das Fehlen einer assertError() -Assion in FlexUnit erklären würde?Warum gibt es in FlexUnit keine assertError() - Funktion?

Ich weiß, wie man so etwas implementiert, und ich werde es wahrscheinlich zu meiner FlexUnit hinzufügen (go open quell!), Aber es scheint so eine eklatante Unterlassung, dass ich mich wundere, wenn ich es gerade mache falsch.

Hat jemand Gedanken dazu?

Antwort

5

Edit 05/02/2010: Ich würde jetzt empfehlen, FlexUnit 4 zu verwenden. Es verwendet ein erweiterbares Metadatensystem, unterstützt erwartete Ausnahmen und unterstützt auch das Ausführen in einer Integrationsserverumgebung ohne die Verwendung von AIR.

Bearbeiten: Sie sollten sich fluint ansehen, die von Leuten erstellt wurde, die genug von FlexUnit und seinen Einschränkungen hatten. Es könnte einige dieser Typen von Behauptungen eingebaut haben.

stimme ich völlig zu. Tatsächlich fehlen in FlexUnit mehrere nützliche Methoden (assertEvent, assertArrayEquals, usw.). Ich weiß, Sie sagen, Sie wissen, wie es zu implementieren, aber fühlen Sie sich frei Mine zu verwenden:

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 4 Kumpel gut mit hamcrest-AS3. hamcrest hat Fehler Assertion Matcher

0

Sie können dieses Assertion Tool verwenden möchten.

Es ersetzt nicht das xxxunit-Framework, nur die Zusicherungen, die Sie machen, machen sie mehr Englisch und weniger Code.

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

Viel Spaß :)