Robolectric自定义阴影对象

时间:2011-06-07 21:59:46

标签: android android-emulator mocking robolectric

OOTB,Robolectric不支持Locales。因此,如果你的应用程序依赖于语言环境(许多应用程序,如果它们是正确的),这可能是一个皇家的痛苦。长话短说,我创建了自己的ShadowFooGeocoder和ShadowFooAddress,允许我模拟我想要的语言环境。它们基本上是对现有阴影的重新实现。

然而,当我这样绑定我的类时:bindShadowClass(ShadowFooGeocoder.class),这很好用。在运行时,返回正确的阴影。问题是我想在这个对象上设置模拟,我不知道如何。 shadowOf(instance)其中instance是一个注入的GeoCoder返回ShadowGeoCoder。我曾尝试直接使用ShadowWrangler,但这也会返回一个ShadowGeocoder。

如何通过bindShadowClass(...)调用绑定我的阴影类,以便设置我的期望(模拟)?

注意:这是Robolectric集团here上同一问题的转贴。我在这里发布是因为我让任何人回答关于小组的问题的成功率相当低。我希望这里有更好的结果。

1 个答案:

答案 0 :(得分:0)

我在这里基本上完成的是像这样扩展ShadowGeocoder:

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

然后我将使用bindShadowClasss(...)绑定它,当我通过静态shadowOf(...)调用检索阴影时,我得到一个“ShadowGeocoder”,它是ShadowFooBarGeocoder的一个实例。然后我把它投射到那种类型并执行我需要的任何工作。