0

自从我们将应用程序中的 flex sdk 升级到 4.10 后,我们在运行使用 mockolate 的单元测试时遇到了验证错误。

它们似乎发生在模拟ByteArray在方法签名中使用 a 的接口时。

示例界面:

public interface IFileSystemHelper {

    function loadFileContents(path:String):ByteArray;

}

示例测试类:

public class SomeTest {

    [Rule]
    public var mockolateRule:MockolateRule = new MockolateRule();

    [Mock]
    public var fileHelper:IFileSystemHelper;

    public function SomeTest() {
    }

    [Test]
    public function testMethod():void {
        // ...
    }
}

使用 flexmojos 6.0.1 编译和运行测试时,会抛出以下错误:

VerifyError:错误#1053:在 mockolate.generated.IFileSystemHelper8F2B5D281827800A824B85B588C6F2A08AE814ED 中非法覆盖 IFileSystemHelper8F2B5D281827800A824B85B588C6F2A08AE814ED

我最初的怀疑是 playerglobal(或我们的例子中的 airglobal)的 sdk 版本问题,所以我用 sdk 4.10 重新编译了 mockolate(和 flexunit),没有任何结果。

唯一可行的方法是从方法签名中删除 ByteArray 类型......但这并不是一个真正的选择:-)(这在以前从来不是问题)

有没有人遇到过类似的问题?

谢谢

4

1 回答 1

0

当使用不同版本的 sdk 编译应用程序的不同部分时,通常会出现此问题。

我建议查看“mvn dependency:tree”的输出,因为它应该输出所有依赖项(直接和传递的)。也许这将帮助您找到错误版本的来源。

于 2014-01-08T14:42:36.253 回答