Pergunta

Parece que a maioria das estruturas de teste xUnit fornecer afirmações para os momentos em que você quer afirmar que uma determinada operação será lançada uma exceção (ou um erro na linguagem AS3.) Existe alguma maneira "padrão" de fazer isso que eu sou com vista, o que explicaria a ausência de uma afirmação assertError () incluído com FlexUnit?

Eu sei como implementar tal coisa, e eu provavelmente irá adicioná-lo ao meu FlexUnit (ir open source!), Mas parece que tal uma omissão gritante que eu estou deixado querer saber se eu estou apenas fazendo errado .

Alguém tem pensamentos sobre isso?

Foi útil?

Solução

Editar 05/02/2010: Eu agora recomendo usar FlexUnit 4 . Ele usa um sistema metdata extensível, suportes exceções esperado, e também suporta a execução em um ambiente de servidor de integração sem o uso de AR.

Editar: Você deve ter um olhar para fluint , que foi construído por pessoas que tiveram o suficiente da FlexUnit e é limitações. Ele pode ter alguns desses tipos de afirmações incorporadas.

Eu concordo totalmente. Na verdade, FlexUnit está ausente vários métodos úteis (assertEvent, assertArrayEquals, etc). Eu sei que você disse que você sabe como implementá-lo, mas fique à vontade para usar minha:

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

Outras dicas

FlexUnit 4 mates bem com hamcrest-AS3. hamcrest tem matchers erro de declaração

Você pode querer considerar o uso desta ferramenta de afirmação.

Ele não substitui o quadro xxxunit, apenas facilitar as afirmações que você faz, torná-los mais Inglês e 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();

Divirta-se:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top