如何在twitter4j中创建模拟的Status对象?

7

我正在使用twitter4j开发StatusListener类,需要一种方法来创建一个模拟的Status对象以便测试我的类。在开发时,我不想连接到API。

有没有办法从json字符串创建Status对象?我只想从Twitter下载一个状态,并将其保存在某个地方作为字符串,然后在开发过程中重复使用它来创建Status对象。

有人可以告诉我如何做吗?

4个回答

7

其中一种选择是使用类似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);
}

2

该对象的所有方法现已弃用。 - danielrvt
2
你可以使用TwitterObjectFactory.createStatus(String rawJson);的替代方法。 - arkrad87

2

我可以通过使用Twitter API的URL在浏览器中下载状态。它已经是JSON格式 - 所以它已经是一个字符串了。我所需要的就是如何从JSON字符串创建一个twitter4j状态对象。 - Dmitri

0

注意:此内容已被弃用

Status status = DataObjectFactory.createStatus();

请使用以下方式:
Status status = TwitterObjectFactory.createStatus(String rawJson);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接