我正在使用twitter4j开发StatusListener类,需要一种方法来创建一个模拟的Status对象以便测试我的类。在开发时,我不想连接到API。
有没有办法从json字符串创建Status对象?我只想从Twitter下载一个状态,并将其保存在某个地方作为字符串,然后在开发过程中重复使用它来创建Status对象。
有人可以告诉我如何做吗?
其中一种选择是使用类似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);
}
DataObjectFactory.createStatus(String rawJSON)
方法。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
来填充构造函数。注意:此内容已被弃用:
Status status = DataObjectFactory.createStatus();
Status status = TwitterObjectFactory.createStatus(String rawJson);
TwitterObjectFactory.createStatus(String rawJson);
的替代方法。 - arkrad87