2016-04-04 6 views
0

Я пытаюсь высмеять объект сеанса cassandra, который получается в фактическом коде следующим образом: session = cluster.connect (keyspace); То, что я ищу, «Для того, чтобы выполнить заявление и вернуть фиктивный сеанса объект»Mocking cassandra session object

Я попытался следующие варианты

  1. MemberModifier.stub ( MemberMatcher.method (Cluster.class, «подключить " String.class)). ToReturn (session);
  2. PowerMockito.when (cluster.connect (keyspace)). ThenReturn (session);
  3. PowerMockito.when (cluster.connect (пространство ключей)) thenAnswer (новый ответ() { ответ общественности Объект (InvocationOnMock вызов) { возврата сеанса; } }).
  4. PowerMockito.when (cluster.connect (keyspace)). ThenReturn (session);
  5. Session testSession = cassandraService.getCassandraDBConnection();

Ни один из них индивидуально или в комбинации, похоже, не работает. Если соответствующий JUnit выполняется, то ошибка, что я получаю Трассировка стека здесь ниже ...

Все хост (ы) пытался для запроса не удалось (пробовал:/<>: <> (com.datastax.driver .core.exceptions.TransportException: [/ ip address] Не удается подключиться)) на com.datastax.driver.core.ControlConnection.reconnectInternal (ControlConnection.java:231) на com.datastax.driver.core.ControlConnection.connect (ControlConnection.java:77) at com.datastax.driver.core.Cluster $ Manager.init (Cluster.java:1414) at com.datastax.driver.core.Cluster.init (Cluster.java:162) at com.datastax.driver.core.Cluster.connectAsync (Cluster.java:333) на com.datastax.driver.core.Cluster.connect (Cluster.java:283) в com.capitalone.payments.customerprofile.service.CassandraInteractionService.getCassandraDBConnection (CassandraInteractionService.java:202)

Может кто-то наставит меня Здесь пожалуйста?

(я маскировали IPAddress и номер_порта в трассировки стека)

Спасибо! -Sriram

ответ

0

Я полагаю, что вы хотите издеваться над объектом сеанса Java-драйвера для тестирования?

В этом случае я бы рекомендовал:

  1. Используйте встроенный сервер Cassandra для модульного тестирования см Achilles Embedded Cassandra или Cassandra Unit

  2. Stubbed Cassandra Используй имитирующие CQL запросы и ответы. Это, вероятно, самое близкое к достижению чего вы хотите, а не насмешка

+0

Спасибо за эту информацию doanduyhai ....Итак, разве мы не можем издеваться над каркасами PowerMock или Mockito? В любом случае, позвольте мне попробовать то, что вы сказали. Еще раз спасибо! – Ram

+0

Объект 'Cluster' имеет защищенный конструктор, поэтому его довольно сложно издеваться над ним. В общем, если вам нужно полагаться на Powermock и заглушить все, я бы рекомендовал пойти на Stubbed Cassandra напрямую – doanduyhai