6

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

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

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

4

4 回答 4

7

Status一种选择是使用像Mockito这样的模拟测试框架来实际创建一个模拟对象。

只要您确切知道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);
}
于 2011-08-28T13:07:30.050 回答
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

根据构造函数文档创建自己的对象使用StatusJSONImpl类和饲料构造函数twitter4j.internal.org.json.JSONObject

于 2011-08-28T13:06:39.330 回答
2

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

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

于 2011-12-13T08:06:59.693 回答
0

注意这已被弃用

Status status = DataObjectFactory.createStatus();

而是使用:

Status status = TwitterObjectFactory.createStatus(String rawJson);
于 2018-11-05T12:13:26.377 回答