首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么FlexUnit中没有assertError()函数?

为什么FlexUnit中没有assertError()函数?
EN

Stack Overflow用户
提问于 2009-03-03 16:32:59
回答 3查看 2.5K关注 0票数 4

似乎大多数XUnit测试框架都会在您想要断言给定操作将抛出异常(或者用AS3的说法是错误)时提供断言。有没有一些我忽略的“标准”方法可以解释为什么FlexUnit中没有包含assertError()断言?

我知道如何实现这样的东西,并且我可能会将它添加到我的FlexUnit中(开源!),但它似乎是一个明显的遗漏,让我怀疑我是不是做错了。

有人对此有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-03 16:39:00

编辑2010年5月2日:我现在推荐使用FlexUnit 4。它使用可扩展的元数据系统,支持预期的异常,还支持在不使用AIR的集成服务器环境中运行。

编辑:你应该看看fluint,它是由受够了FlexUnit和它的局限性的人创建的。它可能内置了其中一些类型的断言。

我完全同意。事实上,FlexUnit缺少几个有用的方法(assertEvent、assertArrayEquals等)。我知道你说你知道如何实现它,但请随意使用我的:

代码语言:javascript
复制
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;
}
票数 5
EN

Stack Overflow用户

发布于 2010-05-10 16:37:53

FlexUnit 4与hamcrest-as3配合良好。hamcrest有错误的断言匹配器

票数 1
EN

Stack Overflow用户

发布于 2013-03-20 03:06:00

您可能希望考虑使用此断言工具。

它不会取代xxxunit框架,只是简化了你所做的断言,让它们更英文化,代码更少。

https://github.com/osher/should.as

代码语言:javascript
复制
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();

玩得开心:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/607136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档