首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用asMock来满足SetupResult.forCall中的具体接口需求

如何使用asMock来满足SetupResult.forCall中的具体接口需求
EN

Stack Overflow用户
提问于 2011-06-08 04:56:23
回答 2查看 168关注 0票数 0

ValidationManager有一个公共字典,用于存储实现IValidatable接口的UI组件。

我正在测试一个需要ValidationManager实例的命令类,我希望它不能通过验证。所以我覆盖了ValidationManager的"validateItem()“方法,如下所示:

代码语言:javascript
复制
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。有没有什么巧妙的方法来存根类型化的对象和接口?或者,我是否只需要创建某个现有对象的实例,该对象已经满足这两个要求?

代码语言:javascript
复制
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;
                    }
                }
            }
EN

回答 2

Stack Overflow用户

发布于 2011-06-08 05:10:30

我非常确定你不能在asMock中同时做这两件事。这是Flash播放器的一个限制,因为它缺乏多态性。

我相信你要做的就是创建一个测试对象来同时做这两件事(扩展DisplayObject和实现IValidatable),并创建一个模拟对象。

票数 1
EN

Stack Overflow用户

发布于 2011-06-08 20:45:21

"multimock“的概念当然是可能的,但是floxy ( asmock用来生成动态代理的框架)不支持它。我之前考虑过添加对它的支持,但它很难通过各种Mock元数据公开,而且还有其他问题需要担心(比如方法名称冲突)。

我同意J_A_X的建议,即创建一个自定义类,然后对其进行模拟。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6271552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档