2

OOTB、Robolectricはロケールをそれほどサポートしていません。したがって、アプリがロケールに依存している場合(多くのアプリは、適切にi18nである場合)、これは非常に苦痛になる可能性があります。簡単に言うと、必要なロケールをシミュレートできる独自のShadowFooGeocoderとShadowFooAddressを作成しました。これらは基本的に、既存のシャドウの再実装です。

ただし、クラスをそのようにバインドする場合:bindShadowClass(ShadowFooGeocoder.class)、これはうまく機能します。実行時に、正しいシャドウが返されます。問題は、このオブジェクトにシミュレーションを設定したいのですが、その方法がわかりません。instanceが注入されたGeoCoderであるshadowOf(instance)は、ShadowGeoCoderを返します。ShadowWranglerを直接操作してみましたが、ShadowGeocoderも返されます。

bindShadowClass(...)呼び出しを介してバインドしたシャドウクラスを取得して、期待値(シミュレーション)を設定するにはどうすればよいですか?

注:これは、ここのRobolectricグループに関する同じ質問の再投稿です。グループの質問に誰かに答えてもらう成功率がかなり低いので、ここに投稿しました。ここでより良い結果を期待しています。

4

1 に答える 1

0

私がここで基本的に行ったことは、ShadowGeocoderを次のように拡張することです。

@SuppressWarnings({"UnusedDeclaration"})
@Implements(Geocoder.class)
public class ShadowFooBarGeocoder extends ShadowGeocoder {
  // implementation stuff
}

次に、bindShadowClasss(...)を使用してバインドし、静的なshadowOf(...)呼び出しを介してシャドウを取得すると、ShadowFooBarGeocoderのインスタンスである「ShadowGeocoder」が返されます。次に、それをそのタイプにキャストして、必要な作業を実行します。

于 2012-04-04T16:41:25.013 に答える