ValidationManagerには、IValidatableインターフェイスを実装するUIコンポーネントを格納するためのパブリックディクショナリがあります。
ValidationManagerのインスタンスを必要とするコマンドクラスをテストしていますが、検証に失敗させたいです。したがって、ValidationManagerの「validateItem()」メソッドを次のようにオーバーライドします。
var validationManagerRepos:ValidationManager = ValidationManager(mockRepository.createStub(ValidationManager));
var validationItem:IValidatable = IValidatable(mockRepository.createStub(IValidatable));
var validatableItems:Dictionary = new Dictionary();
validatableItems[validationItem] = false;
SetupResult.forCall(validationManagerRepos.validateItem(validationItem)).returnValue(false);
私の問題は、コマンドのexecuteメソッドにあります。これは、validationItemがDisplayObject(isVisble)とIValidatableの両方であるかどうかを確認します。型指定されたオブジェクトとインターフェースをスタブ化するための巧妙な方法はありますか?または、すでに両方を満たしている既存のオブジェクトのインスタンスを作成する必要がありますか?
for (var iVal:Object in validationManager.validatableItems)
{
if (isVisible(DisplayObject(iVal)))
{
passed = validationManager.validateItem(IValidatable(iVal));
eventDispatcher.dispatchEvent(new ValidationEvent(ValidationEvent.VALIDATE_COMPLETED, IValidatable(iVal), passed));
if (!passed)
{
allPassed = false;
}
}
}