Как создать фиктивный объект Status в twitter4j? - PullRequest
6 голосов
/ 28 августа 2011

Я использую twitter4j и разрабатываю класс StatusListener, и мне нужен способ просто создать макет объекта Status, чтобы я мог проверить свой класс. Я не хочу иметь на самом деле подключиться к API во время разработки.

Есть ли способ создать объект Status из строки json? я просто хочу чтобы загрузить один статус из Twitter, сохранить его где-нибудь в виде строки и затем используйте его для создания объекта Status во время разработки.

Может кто-нибудь сказать мне, как это сделать?

Ответы [ 4 ]

7 голосов
/ 28 августа 2011

Один из вариантов - создать фиктивный Status объект с использованием фреймворка для фиктивного тестирования, например Mockito .

Пока вы точно знаете, что должен возвращать объект Status,тогда это будет один метод, который не требует подключения к API Twitter.

Скажем, например, что у нас есть метод 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 голосов
/ 13 декабря 2011

Используйте метод DataObjectFactory.createStatus(String rawJSON).

Подробнее см. http://twitter4j.org/en/javadoc/twitter4j/json/DataObjectFactory.html.

2 голосов
/ 28 августа 2011

Позвольте подключиться и загрузить один статус, затем сохранить его через сериализацию

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 согласно документации конструктора

0 голосов
/ 05 ноября 2018

ВНИМАНИЕ это устарело :

Status status = DataObjectFactory.createStatus();

Вместо этого используйте:

Status status = TwitterObjectFactory.createStatus(String rawJson);
...