FlexUnit成分試験パターン:利用addAsyncまたは手動で初期化?
-
09-06-2019 - |
質問
してきましたFlexでの約6ヶ月間で、これらの私の最初のバッチのFlexUnit試験に伴うカスタムコンポーネントがこのようなパターン:
import mx.core.Application;
import mx.events.FlexEvent;
import flexunit.framework.TestCase;
public class CustomComponentTest extends TestCase {
private var component:CustomComponent;
public function testSomeAspect() : void {
component = new CustomComponent();
// set some properties...
component.addEventListener(FlexEvent.CREATION_COMPLETE,
addAsync(verifySomeAspect, 5000));
component.height = 0;
component.width = 0;
Application.application.addChild(component);
}
public function verifySomeAspect(event:FlexEvent) : void {
// Assert some things about component...
}
override public function tearDown() : void {
try {
if (component) {
Application.application.removeChild(component);
component = null;
}
} catch (e:Error) {
// ok to ignore
}
}
基本的には、が必要かどうかを確認するためにコンポーネントの完全に初期化される前にできる確実に確認のことなので、フレックスこの非同期が追加されたディスプレイ一覧です。ばなければなりませんでしセットアップのコールバックを使用FlexUnitのaddAsync機能)のときに通知されることになるのである。
最近ていたんで手動で呼び出しの方法を実行うために必要な場所で、今の私の試験の傾向を見つけることができます。:
import flexunit.framework.TestCase;
public class CustomComponentTest extends TestCase {
public function testSomeAspect() : void {
var component:CustomComponent = new CustomComponent();
component.initialize();
// set some properties...
component.validateProperties();
// Assert some things about component...
}
これがどうしても必要であるが、あとに続くものでちょっと感じのように私は不正な行為が発覚した場合少しのいずれかです。初めての事例ではラミングで、現在のアプリケーション(これは単体テストまでランナーシェルアプリ)、後者ではないの"本物の"環境です。
たというその他の人が取り扱このようなものですか。
解決
んに使うのに非同期バージョン。できることに同意第二版は短くもなんなのかがりやすいかなって思います。この試験は多くのことをすることなが通常は最初の例でどのようにコンポーネントの利用以外の試験環境です。
また、第二いくというの枠組みをいい、一歩となり、各テストを繰り返しこのコードです。しんでいただけるようにしようとしていたことが分かり状況に近のデザイナーとして参加しています。
きり見 dpUint's 配列, ったものの、部品の試験もう少しコ:
public function testLogin():void {
var passThroughData:Object = new Object();
passThroughData.username = "myuser1";
passThroughData.password = "somepsswd";
var sequence:SequenceRunner = new SequenceRunner(this);
sequence.addStep(new SequenceSetter(form.usernameTI, {text:passThroughData.username}));
sequence.addStep(new SequenceWaiter(form.usernameTI, FlexEvent.VALUE_COMMIT, 100));
sequence.addStep(new SequenceSetter(form.passwordTI, {text:passThroughData.password}));
sequence.addStep(new SequenceWaiter(form.passwordTI, FlexEvent.VALUE_COMMIT, 100));
sequence.addStep(new SequenceEventDispatcher(form.loginBtn, new MouseEvent("click", true, false)));
sequence.addStep(new SequenceWaiter(form, "loginRequested", 100));
sequence.addAssertHandler(handleLoginEvent, passThroughData);
sequence.run();
}
(例から dpUint wiki, は、こちらをご参照詳細情報).
所属していません StackOverflow