Session 模拟cassandra会话对象
我试图模拟cassandra的会话对象,该对象是通过以下方式在实际代码中获得的。。。Session 模拟cassandra会话对象,session,junit,cassandra,mockito,powermockito,Session,Junit,Cassandra,Mockito,Powermockito,我试图模拟cassandra的会话对象,该对象是通过以下方式在实际代码中获得的。。。 session=cluster.connect(键空间) 我想要的是“执行语句并返回模拟会话对象” 我尝试了以下几种选择 MemberModifier.stub(MemberMatcher.method(Cluster.class,“connect”String.class)).toReturn(会话) PowerMockito.when(cluster.connect(keyspace)).thenRetur
session=cluster.connect(键空间)代码>
我想要的是“执行语句并返回模拟会话对象”
我尝试了以下几种选择
MemberModifier.stub(MemberMatcher.method(Cluster.class,“connect”String.class)).toReturn(会话)代码>
PowerMockito.when(cluster.connect(keyspace)).thenReturn(session)代码>
PowerMockito.when(cluster.connect(keyspace)).thenAnswer(new Answer(){public Object Answer(invocationMock调用){return session;}})代码>
PowerMockito.when(cluster.connect(keyspace)).thenReturn(session)代码>
sessiontestsession=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)
尝试查询的所有主机均失败(尝试:/:(com.datastax.driver.core.exceptions.TransportException:[/ip地址]无法连接))
位于com.datastax.driver.core.ControlConnection.ReconnectionInternal(ControlConnection.java:231)
位于com.datastax.driver.core.ControlConnection.connect(ControlConnection.java:77)
位于com.datastax.driver.core.Cluster$Manager.init(Cluster.java:1414)
位于com.datastax.driver.core.Cluster.init(Cluster.java:162)
在com.datastax.driver.core.Cluster.connectAsync(Cluster.java:333)上
位于com.datastax.driver.core.Cluster.connect(Cluster.java:283)
在com.capitanlone.payments.customerprofile.service.CassandraInteractionService.getCassandraDBConnection(CassandraInteractionService.java:202)
有人能带我到这里吗
(我在堆栈跟踪中屏蔽了ip地址和端口号)
谢谢!
-Sriram我想您应该模拟Java驱动程序会话对象进行测试,对吗
在这种情况下,我建议:
使用嵌入式Cassandra服务器进行单元测试,请参阅或
使用模拟CQL请求和响应的。这可能是最接近你想要的,而不是嘲笑
谢谢你的信息,多恩杜伊海。。。。那么,我们是否无法使用PowerMock或Mockito框架进行模拟?不管怎样,让我也试试你说的。再次感谢<代码>集群
对象具有受保护的构造函数,因此很难对其进行模拟。一般来说,如果您需要依赖Powermock和存根,我建议您直接使用存根Cassandra