【问题标题】:Alternatives for faking the HTTP Layer for Retrofit伪造 HTTP 层进行改造的替代方案
【发布时间】:2014-02-16 03:18:05
【问题描述】:
过去几天我一直在努力编写一些测试来检查我的某些类的反序列化代码是否正常工作。
我有一个 REST 服务类的 java 包,它通过 Retrofit 与我们的 API 进行通信。我的想法是使用 Robolectric FakeHttpLayer 来提供某些响应并编写一组测试来检查我的服务类是否有效地从 JSON 响应创建模型对象。
- robolectric 似乎没有拦截网络调用(即我总是从我们的 API 获取实时数据)。我不确定这是为什么。
- 到目前为止,还有其他方法可以测试我所写的内容吗?对我来说,测试这一层非常重要,这样编写应用逻辑层的人就有了可靠的合作伙伴,而我则开始着手处理应用的其他部分。
谢谢!
【问题讨论】:
标签:
android
mocking
robolectric
retrofit
【解决方案1】:
分别测试这些!
-
应使用您选择的序列化机制直接测试序列化。
例如,如果您使用的是 JSON 和 Gson,则具有可反序列化并验证其结果的预制 JSON 字符串。
-
可以使用您在测试中使用的 Retrofit 接口的假实现来测试基于网络响应的行为,而不是调用 RestAdapter.create。
class FakeFoo implements Foo { // Foo is your Retrofit interface
@Override public FooResponse doSomething(FooRequest request) {
return new FooResponse("Fake", "Data");
}
}