Question

Il semble que la plupart des frameworks de test XUnit fournissent des assertions pour les moments où vous souhaitez affirmer qu'une opération donnée lève une exception (ou une erreur dans le langage AS3.) Existe-t-il des "standards"? façon de le faire que je néglige, ce qui expliquerait l’absence d’une assertion assertError () incluse dans FlexUnit?

Je sais comment mettre en œuvre une telle chose, et je l'ajouterai probablement à mon FlexUnit (en open source!), mais cela semble être une omission si flagrante qu'il me reste à me demander si je me trompe simplement. .

Quelqu'un a des idées à ce sujet?

Était-ce utile?

La solution

Modifier le 05/02/2010: , je vous recommande maintenant d'utiliser FlexUnit 4 . Il utilise un système de métadonnées extensible, prend en charge les exceptions attendues et peut également s'exécuter dans un environnement de serveur d'intégration sans utiliser AIR.

Modifier: Vous devriez consulter fluint . , qui a été construit par des personnes qui en avaient assez de FlexUnit et de ses limitations. Certains de ces types d’affirmations pourraient être intégrés.

Je suis totalement d'accord. En fait, il manque plusieurs méthodes utiles à FlexUnit (assertEvent, assertArrayEquals, etc.). Je sais que vous avez dit que vous savez comment le mettre en œuvre, mais n'hésitez pas à utiliser le mien:

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

Autres conseils

FlexUnit 4 se marie bien avec hamcrest-as3. hamcrest a des correspondeurs d'assertion d'erreur

Vous pouvez envisager d'utiliser cet outil d'assertion.

Cela ne remplace pas le framework xxxunit, mais facilite les assertions que vous faites, rendez-les plus anglais et moins codé.

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

Amusez-vous :))

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top