我正在使用twitter4j和开发StatusListener类,需要一种只创建模拟状态对象的方法,这样我就可以测试我的类。我不想在开发时必须实际连接到API。
有没有办法从json字符串创建状态对象?我只想从Twitter下载一个状态,将其保存为字符串,然后在我开发时重用它来创建状态对象。
有人能告诉我怎么做吗?
发布于 2011-08-28 21:07:30
一种选择是使用模拟测试框架(如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);
}发布于 2011-08-28 21:06:39
让连接和下载一个状态,然后通过序列化保存它
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构造函数
发布于 2011-12-13 16:07:00
使用DataObjectFactory.createStatus(String rawJSON)方法。
详情请参见http://twitter4j.org/en/javadoc/twitter4j/json/DataObjectFactory.html。
https://stackoverflow.com/questions/7221116
复制相似问题