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



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

我创建了一个PlayComponents类(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
}
}

这样创建的会话在实例化存储库类时传递给我的存储库类

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

//UsersRepository CLASS 不直接使用 SESSION。它将会话传递给 CassandraRepository,最终调用 session.execute 来运行查询...}

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

问题1 - 有没有办法让我TestCassandra开始卡桑德拉的会议? 问题2 - 有没有更好的方法来组织课程?

问题1 - 有没有办法让我得到卡桑德拉的会议 由TestCassandra开始?

没有办法让CassandraSessionTestCassandra开始。

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

最新更新