【问题标题】:Mocking cassandra session object模拟 cassandra 会话对象
【发布时间】:2018-06-18 04:14:21
【问题描述】:

我试图模拟通过以下方式在实际代码中获得的 cassandra 的会话对象... session = cluster.connect(keyspace);

我正在寻找的是“执行语句并返回模拟会话对象”

我尝试了以下选项

  1. MemberModifier.stub(MemberMatcher.method(Cluster.class, "connect" String.class)).toReturn(session);
  2. PowerMockito.when(cluster.connect(keyspace)).thenReturn(session);
  3. PowerMockito.when(cluster.connect(keyspace)).thenAnswer(new Answer() { public Object answer(InvocationOnMock invocation) { return session; } });
  4. PowerMockito.when(cluster.connect(keyspace)).thenReturn(session);
  5. 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


    【解决方案1】:

    我猜您想模拟 Java 驱动程序会话对象进行测试吧?

    在这种情况下,我会建议:

    1. 使用嵌入式 Cassandra 服务器进行单元测试,请参阅 Achilles Embedded CassandraCassandra Unit

    2. 使用模拟 CQL 请求和响应的 Stubbed Cassandra。这可能是最接近实现您想要的而不是模拟的方法

    【讨论】:

    • 感谢您提供的信息 doanduyhai.... 那么,我们无法使用 PowerMock 或 Mockito 框架进行模拟吗?不管怎样,我也试试你说的。再次感谢!
    • Cluster 对象具有受保护的构造函数,因此很难模拟它。一般来说,如果您需要依赖 Powermock 并存根所有内容,我建议您直接使用 Stubbed Cassandra
    猜你喜欢
    • 2016-07-11
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多