我使用twitter4j和发展StatusListener类,并需要一种方法是直接建立 模拟状态的对象,所以我可以测试我的课。在开发过程中,我不希望 实际连接到API。如何在twitter4j中创建模拟状态对象?
有没有一种方法来创建从JSON字符串状态对象?我只想 从Twitter下载一个状态,将它作为字符串保存到某个位置,然后在我开发时重新使用它创建Status对象。
谁能告诉我如何做到这一点?
我使用twitter4j和发展StatusListener类,并需要一种方法是直接建立 模拟状态的对象,所以我可以测试我的课。在开发过程中,我不希望 实际连接到API。如何在twitter4j中创建模拟状态对象?
有没有一种方法来创建从JSON字符串状态对象?我只想 从Twitter下载一个状态,将它作为字符串保存到某个位置,然后在我开发时重新使用它创建Status对象。
谁能告诉我如何做到这一点?
让连接并下载一个状态,然后通过序列化
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
饲料构造根据constructor documentation
一种选择是使用am实际创建一个模拟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);
}
使用DataObjectFactory.createStatus(String rawJSON)
方法。
详见http://twitter4j.org/en/javadoc/twitter4j/json/DataObjectFactory.html。
只要使用Twitter API网址中的浏览器,我就可以从Twitter API下载状态。它已经是json格式 - 所以它已经是一个字符串了。我需要的是如何从json字符串创建twitter4j状态对象。 – Dmitri
@Dmitri:编辑现在 –