Почему во FlexUnit нет функции AssertError()?
-
03-07-2019 - |
Вопрос
Похоже, что большинство сред тестирования XUnit предоставляют утверждения для тех случаев, когда вы хотите утверждать, что данная операция вызовет исключение (или ошибку на языке AS3). Есть ли какой-то «стандартный» способ сделать это, который я упускаю из виду, который объяснило бы отсутствие утверждения AssertError(), включенного в FlexUnit?
Я знаю, КАК реализовать такую вещь, и, вероятно, добавлю ее в свой FlexUnit (с открытым исходным кодом!), но это кажется таким вопиющим упущением, что мне остается задаваться вопросом, не делаю ли я это неправильно.
У кого-нибудь есть мысли по этому поводу?
Решение
Редактирую 02.05.2010: Теперь я бы рекомендовал использовать ФлексЮнит 4.Он использует расширяемую систему метаданных, поддерживает ожидаемые исключения, а также поддерживает работу в среде сервера интеграции без использования AIR.
Редактировать: Вам следует взглянуть на плавно, который был создан людьми, которым достаточно 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;
}
Другие советы
FlexUnit 4 хорошо сочетается с hamcrest-as3.hamcrest имеет средства сопоставления утверждений об ошибках
Возможно, вы захотите рассмотреть возможность использования этого инструмента утверждения.
Он не заменяет структуру 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();
Веселиться :)