1

ASMock を Flexunit4.1 と組み合わせて使用​​し、プロジェクトの自動テストを作成しています。ただし、flash.net.NetGroup をモックしようとすると、次のエラー メッセージが表示されます。

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

[ルール] に次のように追加した後:

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

このエラーは、異なるバージョンでのコンパイルに関係していると考えたので (NetGroup はそれほど前に導入されていません)、ASMock とそのすべての依存プロジェクトをそれぞれの SVN/Git リポジトリからプルし、すべてを再構築しました。プロジェクトのリストは次のとおりです。

  • ASMock
  • ASMockFlexUnit4
  • ASMockFlexUnit41
  • フレミット
  • FLexUnit (元の Adob​​e のもの、Flexunit4 で使用)
  • フレックスユニット4
  • FlexUnit4UIListener
  • FLoxy
  • ハムクレスト

これらはすべて私のワークスペースにロードされ、互いに動的にリンクされています。これで、ビルド前の SWC ファイルへの依存関係はまったくなくなり、すべてのプロジェクトは現在のコンパイラと 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 Player は 11.1.0 (SDK 4.6.0 の最小要件) に設定されています。

前もって感謝します

4

1 に答える 1

0

TBH、私はしばらくasMockに取り組んでいませんが(Flashの作業にはもう関わっていません)、できる限りお手伝いします。

そうは言っても、私に最初に飛び出すのはNetGroup、ファイナルとしてマークされる可能性があるということです。バイトコードを介した最終クラス(および、さらに言えばメソッド)のオーバーライドは、Flash Playerのさまざまなバージョンで動作が異なりますが、FP10では機能しなくなりました。

他のすべてが失敗した場合は、その抽象化(INetGroupFacade)を作成し、それに応じて作成することをお勧めします。

于 2012-07-01T11:15:35.227 に答える