我如何在TestCassandra中获得Cassandra会话的实例

时间:2019-05-21 05:12:18

标签: cassandra

我无法弄清楚如何对访问Cassandra的班级进行单元测试。我可能不得不重新设计!

我创建了一个Play Components类(https://www.playframework.com/documentation/2.6.x/api/scala/index.html#play.api.BuiltInComponentsFromContext),该类在应用程序启动时创建了一个cassandra会话。

trait CassandraRepositoryComponents {
  def environment: Environment
  def configuration: Configuration
  def applicationLifecycle: ApplicationLifecycle
...
lazy private val cassandraSession: Session = {
val cluster = new Cluster.Builder().
      addContactPoints(uri.hosts.toArray: _*).
      withPort(uri.port).
      withQueryOptions(new QueryOptions().setConsistencyLevel(defaultConsistencyLevel)).build
val session = cluster.connect
}

}

实例化repo类后,由此创建的会话将传递给我的repo类

class UsersRepository(utilities:HelperMethods, session: Session,tablename:String) 
  extends CassandraRepository[UserKeys,User](session, tablename, List("bucket","email"))  { 

// UsersRepository类不直接使用会话。它会将会话传递给CassandraRepository,从而有效地调用session.execute以运行查询...}

我想对UsersRepository进行单元测试。我正在使用embedded-cassandra进行测试,但似乎embedded-cassandra没有提供获取其创建的会话实例的方法。

问题1-是否有办法让TestCassandra开始Cassandra的会议? 问题2-我有更好的方式组织课程吗?

1 个答案:

答案 0 :(得分:0)

  

question1-有没有办法让我参加Cassandra的会议   由TestCassandra开始?

无法通过Session开始CassandraTestCassandra的情况。

您可以使用com.github.nosan.embedded.cassandra.test.ClusterFactorycom.github.nosan.embedded.cassandra.test.CqlSessionFactory创建ClusterCqlSession类。