2011-08-28 72 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); 
}