伪造HTTP层进行改造的替代方案

时间:2014-01-24 23:29:09

标签: android mocking robolectric retrofit

过去几天我一直在努力编写一些测试来检查某些类的反序列化代码是否正常工作。

我有一个REST服务类的java包,通过Retrofit与我们的API通信。我的想法是使用Robolectric FakeHttpLayer提供某些响应,并编写一组测试,检查我的服务类是否有效地从JSON响应中创建了Model对象。

  • 似乎robolectric没有拦截网络呼叫(即我总是从我们的API获取实时数据)。我不确定为什么会这样。
  • 到目前为止,还有其他方法来测试我写的内容吗?对我来说测试这一层非常重要,因此编写应用程序逻辑层的人可以使用可靠的东西,而我则转向应用程序的其他部分。

谢谢!

1 个答案:

答案 0 :(得分:4)

单独测试这些!

  1. 应使用您选择的序列化机制直接测试序列化。

    例如,如果您使用的是JSON和Gson,请使用反序列化的JSON字符串并验证结果。

  2. 基于网络响应的行为可以通过使用您在测试中使用的Retrofit接口的虚假实现来测试,而不是调用RestAdapter.create

    class FakeFoo implements Foo { // Foo is your Retrofit interface
      @Override public FooResponse doSomething(FooRequest request) {
        return new FooResponse("Fake", "Data");
      }
    }