2011-08-28 70 views
4

我使用twitter4j和發展StatusListener類,並需要一種方法是直接建立 模擬狀態的對象,所以我可以測試我的課。在開發過程中,我不希望 實際連接到API。如何在twitter4j中創建模擬狀態對象?

有沒有一種方法來創建從JSON字符串狀態對象?我只想 從Twitter下載一個狀態,將它作爲字符串保存到某個位置,然後在我開發時重新使用它創建Status對象。

誰能告訴我如何做到這一點?

回答

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飼料構造根據constructor documentation

+0

只要使用Twitter API網址中的瀏覽器,我就可以從Twitter API下載狀態。它已經是json格式 - 所以它已經是一個字符串了。我需要的是如何從json字符串創建twitter4j狀態對象。 – Dmitri

+0

@Dmitri:編輯現在 –

6

一種選擇是使用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); 
}