Тест модуля Guice: требуется привязка аннотированных строк - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь написать несколько тестов для моих общих модулей guice в моем репозитории библиотеки, которые я использую в нескольких проектах.Некоторые модули имеют аннотированные строковые инъекции, которые внедряют конфигурации проекта.Например, у меня есть модуль cassandra, для которого требуются привязки строк для хоста, порта и других конфигураций:

class CassandraModule : AbstractModule() {
companion object {
    const val CASSANDRA_HOST = "cassandra.host"
    const val CASSANDRA_PORT = "cassandra.port"
    ...

    const val MY_CASSANDRA_READ = "casandra.db.read"
    const val MY_CASSANDRA_WRITE = "casandra.db.write"
}

override fun configure() {
}

@Provides
@Singleton
@Named(MY_CASSANDRA_READ)
fun provideCassandraReadCluster(
    @Named(CASSANDRA_HOST) host: String,
    @Named(CASSANDRA_PORT) port: Int,
    @Named(CASSANDRA_DATACENTER) dc: String
): Cluster {
    val queryOptions = QueryOptions()
    queryOptions.consistencyLevel = ConsistencyLevel.LOCAL_ONE

    val cluster = Cluster.builder()
        .addContactPoint(host)
        .withPort(port)
        .withLoadBalancingPolicy(DCAwareRoundRobinPolicy(dc))
        .withQueryOptions(queryOptions)
        .build()
    return cluster
}

@Provides
@Singleton
@Named(MY_CASSANDRA_READ)
fun provideCassandraReadSession(
    @Named(MY_CASSANDRA_READ) cluster: Cluster,
    @Named(CASSANDRA_KEYSPACE) keyspace: String
): Session {
    return cluster.connect(keyspace)
}
...
}

Все эти привязки конфигурационных строк должны поступать из других проектов через привязки Property, которые используют этот библиотечный модуль какзависимость.Как я высмеиваю эти аннотированные свойства строки

1 Ответ

0 голосов
/ 30 мая 2018

Почему вы хотите издеваться над ними?Вы можете зарегистрировать дополнительный модуль в своих тестах, который предоставляет эти значения.

...