似乎大多数XUnit测试框架都会在您想要断言给定操作将抛出异常(或者用AS3的说法是错误)时提供断言。有没有一些我忽略的“标准”方法可以解释为什么FlexUnit中没有包含assertError()断言?
我知道如何实现这样的东西,并且我可能会将它添加到我的FlexUnit中(开源!),但它似乎是一个明显的遗漏,让我怀疑我是不是做错了。
有人对此有什么想法吗?
发布于 2009-03-03 16:39:00
编辑2010年5月2日:我现在推荐使用FlexUnit 4。它使用可扩展的元数据系统,支持预期的异常,还支持在不使用AIR的集成服务器环境中运行。
编辑:你应该看看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;
}发布于 2010-05-10 16:37:53
FlexUnit 4与hamcrest-as3配合良好。hamcrest有错误的断言匹配器
发布于 2013-03-20 03:06:00
您可能希望考虑使用此断言工具。
它不会取代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();玩得开心:)
https://stackoverflow.com/questions/607136
复制相似问题