# Unit testing new Java Api Client update method with Mockito

**URL:** <https://discuss.elastic.co/t/unit-testing-new-java-api-client-update-method-with-mockito/361497>\
**Category:** Elasticsearch\
**Created:** [June 14, 2024, 1:06pm UTC](https://discuss.elastic.co/t/unit-testing-new-java-api-client-update-method-with-mockito/361497 "2024-06-14T13:06:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![PodarcisMuralis](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/podarcismuralis/32/122606_2.png) [@PodarcisMuralis](https://discuss.elastic.co/u/PodarcisMuralis)\
**Post date:** [June 14, 2024, 1:06pm UTC](https://discuss.elastic.co/t/unit-testing-new-java-api-client-update-method-with-mockito/361497/1 "2024-06-14T13:06:13Z")

</div>

Hi, I am trying to write a unit test with JUnit & Mockito for client.update() method but I am stuck.

Here is my **updateMyId()** method to test:

```auto
var searchRequest = Factory.createDocumentByIdSearchRequest(indexName, id, aParamater);
var searchResponse = elasticsearchJavaApiClient.search(searchRequest, MyCustom.class);
var singleDocumentHit = getSingleRawDocumentHit(searchResponse, id);
var updateRequest = Factory.createUpdateRequest(firstParam, secondParam, singleDocumentHit);
elasticsearchJavaApiClient.update(updateRequest, MyCustom.class);

```

and i tried this:

```auto
SearchResponse<MyCustom> mockedSearchResponse = SearchResponseDataProvider.createSearchResponseForASingleDocument();
when(elasticsearchJavaApiClient.search(any(SearchRequest.class), eq(MyCustom.class))).thenReturn(mockedSearchResponse);
var expectedUpdateResponse = UpdateResponse.of(update -> update
                .index("my_index")
                .id(id)
                .primaryTerm(1L)
                .seqNo(1L)
                .shards(ShardStatistics.of(sh -> sh
                        .successful(4)
                        .failed(0)
                        .total(4))
                ).version(1L)
                .result(Result.Updated));
				
var updateRequest = Factory.createUpdateRequest(firstParam, secondParam, mockedSearchResponse.hits().hits().get(0));
when(elasticsearchJavaApiClient.update(eq(updateRequest), eq(MyCustom.class))).thenReturn(expectedUpdateResponse);
elasticSearchServiceImpl.updateMyId(paramA, id, paramB, paramC, paramD);
verify(elasticsearchJavaApiClient).update(eq(updateRequest), eq(MyCustom.class));

```

I mean I tried literally every combination but still couldn't have test past. I appreciate any help. Thanks.
