سؤال

ويبدو أن معظم XUnit اختبار أطر تقديم تأكيدات عن أوقات عندما كنت تريد أن تؤكد أن عملية معينة سيتم طرح استثناء (أو خطأ في AS3 لغة.) هناك بعض "القياسية" من هذا الذي أنا تطل مما يفسر غياب assertError() التأكيد المضمنة مع FlexUnit?

أنا أعرف كيفية تنفيذ مثل هذا الشيء, و ربما إضافة إلى FlexUnit (الذهاب مفتوحة المصدر!), ولكن يبدو أن مثل هذا الاهمال أنني أتساءل إذا أنا فقط أفعل ذلك الخطأ.

أي شخص لديه أفكار حول هذا ؟

هل كانت مفيدة؟

المحلول

تحرير 05/02/2010: أود الآن نوصي باستخدام FlexUnit 4.ويستخدم الموسعة metdata نظام يدعم المتوقع استثناءات ، كما يدعم تشغيل في تكامل server البيئة دون استخدام الهواء.

تحرير: يجب أن يكون لديك نظرة على 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;
}

نصائح أخرى

وFlexUnit 4 زملائه بشكل جيد مع hamcrest-AS3. hamcrest ديه matchers تأكيد خطأ

وقد ترغب في النظر في استخدام هذه الأداة التأكيد.

وأنها لا تحل محل الإطار 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();

والمتعة:)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top