如何在twitter4j中创建模拟Status对象?

时间:2011-08-28 12:59:19

标签: java twitter twitter4j

我正在使用twitter4j并开发StatusListener类,需要一种方法来创建一个 mock状态对象,所以我可以测试我的类。我不想要 实际上在我开发的时候连接到API。

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

有人可以告诉我该怎么做吗?

4 个答案:

答案 0 :(得分:7)

一种选择是使用像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);
}

答案 1 :(得分: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的Feed构造函数

答案 2 :(得分:2)

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

有关详细信息,请参阅http://twitter4j.org/en/javadoc/twitter4j/json/DataObjectFactory.html

答案 3 :(得分:0)

注意,这已已弃用

Status status = DataObjectFactory.createStatus();

代替使用:

Status status = TwitterObjectFactory.createStatus(String rawJson);