私が取り組んでいるフレックス プロジェクトで FileReference をモックしようとしています。
名前やサイズなどの一部のプロパティのスタブは正常に機能しますが、データは機能しません。問題を示すコードは次のとおりです。
[Test]
public function FileReferenceMockTest():void {
var frMock:FileReference = nice(FileReference);
var bytes:ByteArray = new ByteArray();
stub(frMock).getter("data").returns(bytes);
stub(frMock).getter("name").returns("filename");
assertThat(frMock.name, equalTo("filename")); // works
assertThat(frMock.data, sameInstance(bytes)); // Fails and says that frMock.data is null
}
ブレークポイントを設定し、デバッガーで frMock をチェックすると、次のようになります。
frMock
[inherited]
data = null
creationDate = null
creator = null
modificationDate = null
name = "filename"
__proxy__ = InterceptorProxyListener
...
ご覧のとおり、データはモックによって異なる方法で処理されます。
私はこの問題に数時間頭を悩ませてきましたが、これを理解するのに本当に役立つかもしれません.
更新:
このコードは、Flex ライブラリ プロジェクトまたは Flex プロジェクト (Air) として実行すると機能します。失敗するのは、コードがブラウザー プラグインで実行されるときです。ライブラリ プロジェクトのデバッガーでチェックすると、データ プロパティが [Inherited] 内にネストされておらず、他のプロパティと同じレベルにあることも示されます。
更新:
URLLoader で同じ問題が発生しましたが、今回は逆です。URLLoader のモックは、ブラウザー プラグインでテストを実行する場合にのみ機能します。
入力に応じて FileReference または URLLoader のいずれかを使用して、ローカルおよびリモートのファイル読み込みを処理するクラスを作成しているため、このクラスを完全に単体テストすることは効果的に防止されています。:(