【问题标题】:ASMock: VerifyError for flash.net.NetGroupASMock:flash.net.NetGroup 的 VerifyError
【发布时间】:2012-03-19 15:10:33
【问题描述】:

我一直在将 ASMock 与 Flexunit4.1 结合使用来为我的项目创建自动化测试。但是,当我尝试模拟 flash.net.NetGroup 时,我收到以下错误消息:

VerifyError: Error #1053: Illegal override of NetGroup6B54B8B32216E97DF75A0EBB17879E26E9B81916 in asmock.generated.NetGroup6B54B8B32216E97DF75A0EBB17879E26E9B81916.

在我将它添加到 [Rule] 之后:

[Rule] public var includeMocks:IncludeMocksRule = new IncludeMocksRule([
            NetGroup
        ]);

我认为此错误与使用不同版本进行编译有关(不久前引入了 NetGroup),因此我从各自的 SVN/Git 存储库中提取了 ASMock 及其所有依赖项项目并全部重建。项目列表为:

  • ASMock
  • ASMockFlexUnit4
  • ASMockFlexUnit41
  • FLemit
  • FLexUnit(Adobe 原版,Flexunit4 使用)
  • Flexunit4
  • FlexUnit4UIListener
  • FLoxy
  • 腘绳肌

这些都加载到我的工作区并动态链接到彼此。现在,我在 any 预构建 SWC 文件上留下了 no 依赖项,并且所有项目都是使用当前编译器和 4.6.0 SDK 构建的。 (其中一些项目自 SDK 2.x 以来尚未重新编译,因此我寄予厚望)。

所以我重新运行了测试并收到以下错误:

return types dont match
   virt * flash.net::NetGroup/set receiveMode()
   over void asmock.generated::NetGroup6B54B8B32216E97DF75A0EBB17879E26E9B81916/set receiveMode()

VerifyError: Error #1053: Illegal override of NetGroup6B54B8B32216E97DF75A0EBB17879E26E9B81916 in asmock.generated.NetGroup6B54B8B32216E97DF75A0EBB17879E26E9B81916.

因此,显然问题与具有不同 SDK 版本的 SWC 文件无关。谁能指出我正确的方向,所以解决这个问题,因为我真的很想模拟 NetGroups(和自定义子类)来正确测试我的项目。

其他信息:对于所有项目,所需的最低 Flash 播放器设置为 11.1.0(SDK 4.6.0 的最低要求)。

提前致谢

【问题讨论】:

  • 现在我“解决”了这个问题,方法是在 Flemit 的 PropertInfo 中编辑构造函数以返回我们特定方法名称的星形返回类型。这远不是解决此问题的最优雅方法,因此我仍在寻找有关导致此问题的原因以及如何更优雅地解决此问题的良好见解。

标签: apache-flex actionscript verifyerror asmock


【解决方案1】:

TBH,我已经有一段时间没有从事 asMock 工作了(我不再参与任何 Flash 工作),但我会尽我所能提供帮助。

话虽如此,我首先想到的是NetGroup 可以被标记为final。通过字节码覆盖最终类(和方法)在不同的 Flash Player 版本中表现不同,但它在 FP10 中停止工作。

如果一切都失败了,我建议创建它的抽象 (INetGroupFacade) 并取决于它。

【讨论】:

    猜你喜欢
    • 2017-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多