كيفية استخدام SequencerUnner مع Flexunit 4
-
27-09-2019 - |
سؤال
في ال Flexunit ويكي لقد قرأت عن سلسلة التسلسل المثيرة للاهتمام التي ساهمت بها أفراد الفلنت. الآن أحاول إجراء اختبار يشبه إلى حد كبير المثال ، ولكن عند تنفيذ طريقة Run () لمثيل التسلسل ، أحصل على هذا الاستثناء:
Cannot add asynchronous functionality to methods defined by Test,Before or After that are not marked async
Error: Cannot add asynchronous functionality to methods defined by Test,Before or After that are not marked async
at org.flexunit.async::AsyncLocator$/getCallableForTest()[C:\Users\dmoor e\Documents\_Production\Flex Unit 4\GIT\FlexUnit4\src\org\flexunit\async\AsyncLocator.as:82]
at org.fluint.sequence::SequenceWaiter/setupListeners()[C:\Users\dmoore\ Documents\_Production\Flex Unit 4\GIT\FlexUnit4\src\org\fluint\sequence\SequenceWaiter.as:100]
at org.fluint.sequence::SequenceRunner/continueSequence()[C:\Users\dmoor e\Documents\_Production\Flex Unit 4\GIT\FlexUnit4\src\org\fluint\sequence\SequenceRunner.as:177]
at org.fluint.sequence::SequenceRunner/run()[C:\Users\dmoore\Documents\_ Production\Flex Unit 4\GIT\FlexUnit4\src\org\fluint\sequence\SequenceRunner.as:124]
هل استخدم أي شخص SequencerUnner مع Flexunit 4 بالفعل. التعليق التوضيحي [الاختبار (Async)] موجود بالفعل.
المحلول 2
بفضل مايكل لابريولا ، الذي أجاب على سؤالي في منتدى Adobe تمكنت أخيرًا من تشغيله. لاحظ أن توثيق SequenceRunner
في ويكي عفا عليها الزمن وخطأ جزئيا.
- لا ترث من أي فئة اختبار.
- تخطي ASYNCHANDLER
CREATION_COMPLETE
في الإعداد. بالأحرى إضافة أSequenceWaiter
في الاختبار الذي ينتظرCREATION_COMPLETE
حدث المكون - يجب وضع علامة على الاختبار كاختبار غير متزامن ، لذا أضف
[Test(async)]
البيانات الوصفية لاختبار الحالات التي تستخدمSequenceRunner
.
نصائح أخرى
فيما يلي فئة حالة اختبار مثال كاملة وبسيطة للغاية.
package test
{
import flash.events.Event;
import org.flexunit.asserts.assertEquals;
import org.fluint.sequence.SequenceRunner;
import org.fluint.sequence.SequenceWaiter;
public class test_case
{
[Test(async)]
public function test_function():void
{
var counter:Object = { count: 0}
var sr:SequenceRunner = new SequenceRunner(this);
sr.addStep(new SequenceWaiter(new TestWaiterTarget(counter), "myEvent", 50000));
sr.addStep(new SequenceWaiter(new TestWaiterTarget(counter), "myEvent", 5000))
sr.addAssertHandler(test_function_handler, counter);
sr.run();
}
private function test_function_handler(event:Event, passthroughData:*):void
{
assertEquals(passthroughData.count, 2);
}
}
}
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.TimerEvent;
import flash.utils.Timer;
class TestWaiterTarget extends EventDispatcher
{
var timer:Timer = new Timer(250, 1);
private var _counter:Object;
public function TestWaiterTarget(counter)
{
_counter = counter;
timer.addEventListener(TimerEvent.TIMER_COMPLETE, timer_timerCompleteHandler);
timer.start();
}
private function timer_timerCompleteHandler(event:TimerEvent):void
{
_counter.count++;
dispatchEvent(new Event("myEvent"));
}
}
لا تنتمي إلى StackOverflow