我使用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:編輯現在 –