【问题标题】:How to create mock Status object in twitter4j?如何在 twitter4j 中创建模拟状态对象?
【发布时间】:2011-08-28 12:59:19
【问题描述】:

我正在使用 twitter4j 并开发 StatusListener 类,需要一种方法来创建一个 模拟 Status 对象,以便我可以测试我的课程。我不想 在我开发时实际连接到 API。

有没有办法从 json 字符串创建一个状态对象?我只是想 从 Twitter 下载一个状态,将其保存为字符串,然后 然后在我开发时重用它来创建 Status 对象。

谁能告诉我怎么做?

【问题讨论】:

    标签: java twitter twitter4j


    【解决方案1】:

    一种选择是使用模拟测试框架(如Mockito)实际创建模拟Status 对象。

    只要您确切知道Status 对象应该返回什么,那么这将是一种不需要任何连接到 Twitter API 的方法。

    假设我们有一个YourClass.extractStatusText 方法,该方法将从Status 对象中提取状态文本并将其返回。

    使用 Mockito,我们可以做到以下几点:

    import static org.mockito.Mockito.mock;
    
    // ...
    
    public void testCode() {
      // given - we'll mock a Status which returns a canned result:
      Status status = mock(Status.class);
      when(status.getText()).thenReturn("It's a nice summer day!");
    
      // when - exercise your class
      String statusText = YourClass.extractStatusText(status);
    
      // then - check that the status text is returned
      assertEquals("It's a nice summer day!", statusText);
    }
    

    【讨论】:

      【解决方案2】:

      让连接和下载一个状态,然后通过序列化保存它

      http://java.sun.com/developer/technicalArticles/Programming/serialization/
      http://twitter4j.org/en/javadoc/twitter4j/Status.html
      http://twitter4j.org/en/javadoc/twitter4j/StatusJSONImpl.html

      根据constructor documentation,使用StatusJSONImpl 类和twitter4j.internal.org.json.JSONObject 提供构造函数来创建自己的对象

      【讨论】:

      • 我可以从 Twitter API 下载状态,只需使用浏览器从 Twitter API url 下载。它已经是 json 格式 - 所以它已经是一个字符串。我所需要的只是如何从 json 字符串创建一个 twitter4j 状态对象。
      【解决方案3】:

      使用DataObjectFactory.createStatus(String rawJSON) 方法。

      详情请见http://twitter4j.org/en/javadoc/twitter4j/json/DataObjectFactory.html

      【讨论】:

      • 该对象的所有方法现在都已弃用
      • 你可以使用TwitterObjectFactory.createStatus(String rawJson);
      【解决方案4】:

      注意这是弃用

      Status status = DataObjectFactory.createStatus();
      

      改为使用:

      Status status = TwitterObjectFactory.createStatus(String rawJson);
      

      【讨论】:

        猜你喜欢
        • 2017-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-26
        相关资源
        最近更新 更多