【发布时间】:2018-06-18 04:14:21
【问题描述】:
我试图模拟通过以下方式在实际代码中获得的 cassandra 的会话对象...
session = cluster.connect(keyspace);
我正在寻找的是“执行语句并返回模拟会话对象”
我尝试了以下选项
MemberModifier.stub(MemberMatcher.method(Cluster.class, "connect" String.class)).toReturn(session);PowerMockito.when(cluster.connect(keyspace)).thenReturn(session);PowerMockito.when(cluster.connect(keyspace)).thenAnswer(new Answer() { public Object answer(InvocationOnMock invocation) { return session; } });PowerMockito.when(cluster.connect(keyspace)).thenReturn(session);Session testSession = cassandraService.getCassandraDBConnection();
这些单独或组合似乎都不起作用。 执行相关的 JUnit 时,我得到的错误是 下面是堆栈跟踪...
All host(s) tried for query failed (tried: /<<ip address>>:<<port no>> (com.datastax.driver.core.exceptions.TransportException: [/ip address] Cannot connect))
at com.datastax.driver.core.ControlConnection.reconnectInternal(ControlConnection.java:231)
at 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)
at com.datastax.driver.core.Cluster.connect(Cluster.java:283)
at com.capitalone.payments.customerprofile.service.CassandraInteractionService.getCassandraDBConnection(CassandraInteractionService.java:202)
有人可以指导我吗?
(我在堆栈跟踪中屏蔽了 IP 地址和端口号)
谢谢! -斯里拉姆
【问题讨论】:
标签: session junit cassandra mockito powermockito