Я не могу понять, как провести юнит-тестирование моего класса с доступом к 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 - есть ли лучший способ организовать занятия?