gpt4 book ai didi

apache-flex - 使用 asMock,如何满足 SetupResult.forCall 中的具体和接口(interface)要求

转载 作者:行者123 更新时间:2023-11-28 21:34:11 25 4
gpt4 key购买 nike

ValidationManager 有一个公共(public)字典,用于存储实现 IValidatable 接口(interface)的 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。有什么巧妙的方法来 stub 类型化对象和接口(interface)吗?还是我只需要创建一个已经满足这两个条件的现有对象的实例?

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;
}
}
}

最佳答案

我相当确定您不能在 asMock 中同时执行这两项操作。由于缺乏多态性,这是 Flash Player 的一个限制。

我相信您需要做的是创建一个测试对象来执行这两项操作(扩展 DisplayObject 和实现 IValidatable)并创建一个模拟对象。

关于apache-flex - 使用 asMock,如何满足 SetupResult.forCall 中的具体和接口(interface)要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com