0

ElasticSearch へのアクセス レイヤーとして Elastic4s を使用しており、アプリケーションで単体テストを作成しようとしています。私は自分のモッキング ライブラリとして scalaMock を使用しています。コードをテストできるように、elastic4s の client.execute 関数をモックしたいと考えています。

これはテストされたコードです:

def insert(elasticDbConnection: ElasticClient, entIndexName: String, entTypingName: String, autoId: String, newJsonEntVal: String): Option[List[String]] = {

    import com.sksamuel.elastic4s.http.ElasticDsl._
    val req: IndexRequest = indexInto(index = entIndexName, `type` = entTypingName)
        .id(id = autoId).source(newJsonEntVal).refreshImmediately

    val insertRequests: List[IndexRequest] = List(req)

    val execRes: Future[Response[BulkResponse]] = elasticDbConnection.execute(bulk(insertRequests))

    val insertRes: BulkResponse = execRes.await.result

    val insertedEnts = insertRes.successes.map(resItem => resItem.id).toList

    Some(insertedEnts)
}

ユニットテストコードは次のとおりです。

...
import com.sksamuel.elastic4s.http.ElasticDsl._

val execRes: Future[Response[BulkResponse]]= mock[Future[Response[BulkResponse]]]
val elasticClientMock = mock[ElasticClient]
(elasticClientMock.execute _).expects(_:BulkRequest).returns(execRes).once()

testElasticsDal.insert(elasticClientMock, "indexName", "entType", "test-id", "{testField:\"testValue\"}")

エラーが表示されます:「型の不一致、予想: FunctionAdapter1[BulkRequest, Boolean]、実際: BulkRequest 型の不一致、予想: MockParameter[BulkRequest]、実際: BulkRequest

私は何を間違っていますか?アプリケーション コードをどのようにテストすればよいですか? クライアントをどのように嘲笑する必要がありますか?

ありがとうございました

4

1 に答える 1