Почему в FlexUnit нет функции assertError ()? - PullRequest
4 голосов
/ 03 марта 2009

Кажется, что большинство сред тестирования XUnit предоставляют утверждения для случаев, когда вы хотите утверждать, что данная операция вызовет исключение (или ошибку на языке AS3). Есть ли какой-то "стандартный" способ сделать это, что я с пропуском, что объясняет отсутствие assertError (), включенного в FlexUnit?

Я знаю, КАК реализовать такую ​​вещь, и я, вероятно, добавлю ее в свой FlexUnit (иди с открытым исходным кодом!), Но мне кажется, что это такое вопиющее упущение, что я задаюсь вопросом, делаю ли я это неправильно .

У кого-нибудь есть мысли по этому поводу?

Ответы [ 3 ]

5 голосов
/ 03 марта 2009

Изменить 05/02/2010: Я бы сейчас рекомендовал использовать FlexUnit 4 . Он использует расширяемую систему метаданных, поддерживает ожидаемые исключения, а также поддерживает работу в среде сервера интеграции без использования AIR.

Edit: Вы должны взглянуть на fluint , который был создан людьми, которым достаточно FlexUnit и его ограничений. В него могут быть встроены некоторые из этих типов утверждений.

Я полностью согласен. На самом деле в FlexUnit отсутствует несколько полезных методов (assertEvent, assertArrayEquals и т. Д.). Я знаю, что вы сказали, что знаете, как это реализовать, но не стесняйтесь использовать мою:

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 голос
/ 10 мая 2010

FlexUnit 4 хорошо сочетается с hamcrest-as3. Hamcrest имеет соответствия утверждений об ошибках

0 голосов
/ 19 марта 2013

Вы можете рассмотреть возможность использования этого инструмента подтверждения.

Он не заменяет платформу xxxunit, он лишь упрощает сделанные вами утверждения, делает их более английскими и меньше кода.

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

Веселитесь:)

...