Pregunta

Parece que la mayoría de los marcos de prueba de XUnit proporcionan afirmaciones para los momentos en los que desea afirmar que una operación determinada generará una excepción (o un Error en el lenguaje AS3). ¿Hay alguna "estándar"? ¿Qué manera de hacer esto que estoy pasando por alto, lo que explicaría la ausencia de una aserción asirError () incluida con FlexUnit?

Sé cómo implementar una cosa así, y probablemente la agregaré a mi FlexUnit (¡vaya a código abierto!), pero parece una omisión tan evidente que me pregunto si lo estoy haciendo mal. .

¿Alguien tiene alguna idea sobre esto?

¿Fue útil?

Solución

Editar 05/02/2010: ahora recomiendo usar FlexUnit 4 . Utiliza un sistema de metdatos extensible, admite excepciones esperadas y también admite la ejecución en un entorno de servidor de integración sin el uso de AIR.

Editar: Debería echar un vistazo a fluint , que fue construido por personas que tenían suficiente FlexUnit y sus limitaciones. Podría tener algunos de estos tipos de aserciones incorporadas.

Estoy totalmente de acuerdo. De hecho, a FlexUnit le faltan varios métodos útiles (assertEvent, assertArrayEquals, etc.). Sé que dijiste que sabes cómo implementarlo, pero no dudes en usar mío:

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

Otros consejos

FlexUnit 4 se relaciona bien con hamcrest-as3. hamcrest tiene coincidentes de aserción de errores

Es posible que desee considerar el uso de esta herramienta de aserción.

No reemplaza el marco xxxunit, solo facilita las aserciones que hace, crea más inglés y menos código.

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

Diviértete :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top