как я могу получить экземпляр сеанса Кассандры в TestCassandra - PullRequest
0 голосов
/ 21 мая 2019

Я не могу понять, как провести юнит-тестирование моего класса с доступом к Cassandra. Возможно, мне придется изменить дизайн!

Я создал класс Play Components (https://www.playframework.com/documentation/2.6.x/api/scala/index.html#play.api.BuiltInComponentsFromContext), который создает сессию кассандры при запуске приложения.

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 НЕ ИСПОЛЬЗУЕТ сеанс ПРЯМО. Он передает сессию в CassandraRepository, КОТОРЫЙ СЛУЧАЙНО ВЫЗЫВАЕТ session.execute ДЛЯ ВЫПОЛНЕНИЯ ЗАПРОСОВ ...}

Я хочу провести модульный тест UsersRepository. Я использую embedded-cassandra для тестирования, но, похоже, embedded-cassandra не предоставляет способ получить экземпляр сеанса, который он создает.

вопрос1 - Есть ли способ, которым я мог бы начать сеанс Кассандры к TestCassandra? вопрос2 - есть ли лучший способ организовать занятия?

1 Ответ

0 голосов
/ 21 мая 2019

question1 - Есть ли способ получить сеанс Кассандры? запущен TestCassandra?

Нет способа получить Session из Cassandra, запущенного TestCassandra.

Вы можете использовать либо com.github.nosan.embedded.cassandra.test.ClusterFactory или com.github.nosan.embedded.cassandra.test.CqlSessionFactory для создания Cluster или CqlSession классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...