У меня есть объект, как это:Скала: Moking мой SCALA объект, который имеет внешнюю зависимость
// I want to test this Object
object MyObject {
protected val retryHandler: HttpRequestRetryHandler = new HttpRequestRetryHandler {
def retryRequest(exception: IOException, executionCount: Int, context: HttpContext): Boolean = {
true // implementation
}
}
private val connectionManager: PoolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager
val httpClient: CloseableHttpClient = HttpClients.custom
.setConnectionManager(connectionManager)
.setRetryHandler(retryHandler)
.build
def methodPost = {
//create new context and new Post instance
val post = new HttpPost("url")
val res = httpClient.execute(post, HttpClientContext.create)
// check response code and then take action based on response code
}
def methodPut = {
// same as methodPost except use HttpPut instead HttpPost
}
}
Я хочу, чтобы проверить этот объект, насмехаясь зависимые объекты, как HTTPClient. Как достичь этого? могу ли я сделать это с помощью Mokito или любым лучшим способом? Если да. Как? Есть ли лучший дизайн для этого класса?
Я думал об инъекции зависимостей, но не мог понять, как реализовать. Один из подходов, который я использовал, заключался в том, чтобы использовать httpClient в качестве параметра для каждого метода (поскольку класс объектов не может иметь конструктор в Scala, например Java .. но все же Put and Post будет иметь новый), но в этом случае я потеряю контроль над повторением и другим сбоем обработка дела. –