ValidationManager 有一个公共 Dictionary 用于存储实现 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);
我的问题出在命令的执行方法中。它检查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;
}
}
}