Domanda

Sembra che la maggior parte dei framework di test XUnit forniscano asserzioni per i momenti in cui si desidera affermare che una determinata operazione genererà un'eccezione (o un errore nel linguaggio AS3). Esistono alcuni "standard"? modo di fare ciò che sto trascurando, il che spiegherebbe l'assenza di un'asserzione assertError () inclusa in FlexUnit?

So COME implementare una cosa del genere, e probabilmente la aggiungerò alla mia FlexUnit (vai all'open source!), ma sembra un'omissione così evidente che mi viene da chiedermi se sto solo sbagliando .

Qualcuno ci ha pensato?

È stato utile?

Soluzione

Modifica il 05/02/2010: ora consiglierei di utilizzare FlexUnit 4 . Utilizza un sistema di metadati estensibile, supporta le eccezioni previste e supporta anche l'esecuzione in un ambiente di server di integrazione senza l'uso di AIR.

Modifica: dovresti dare un'occhiata a fluint , che è stato creato da persone che ne avevano abbastanza di FlexUnit e ha dei limiti. Potrebbe avere alcuni di questi tipi di asserzioni integrate.

Sono totalmente d'accordo. In effetti, in FlexUnit mancano diversi metodi utili (assertEvent, assertArrayEquals, ecc.). So che hai detto che sai come implementarlo, ma sentiti libero di usare il mio:

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

Altri suggerimenti

FlexUnit 4 si accoppia bene con hamcrest-as3. hamcrest ha corrispondenti di asserzioni di errori

Puoi prendere in considerazione l'utilizzo di questo strumento di asserzione.

Non sostituisce il framework xxxunit, facilita semplicemente le affermazioni che fai, rendile più inglese e meno codice.

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

Buon divertimento :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top