2

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

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

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

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

4

1 回答 1

0

我在这里所做的基本上是像这样扩展 ShadowGeocoder:

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

然后我会使用 bindShadowClasss(...) 绑定它,当我通过静态 shadowOf(...) 调用检索阴影时,我会返回一个“ShadowGeocoder”,它是 ShadowFooBarGeocoder 的一个实例。然后我将其转换为该类型并执行我需要的任何工作。

于 2012-04-04T16:41:25.013 回答