cadonna commented on code in PR #13529:
URL: https://github.com/apache/kafka/pull/13529#discussion_r1168432918


##########
streams/src/test/java/org/apache/kafka/streams/processor/internals/TaskManagerTest.java:
##########
@@ -970,6 +971,7 @@ public void 
shouldHandleMultipleRemovedTasksFromStateUpdater() {
         expectLastCall().anyTimes();
         final TasksRegistry tasks = mock(TasksRegistry.class);
         
when(tasks.removePendingTaskToCloseClean(taskToClose.id())).thenReturn(true);
+        when(tasks.removePendingTaskToCloseClean(argThat(taskId -> 
!taskId.equals(taskToClose.id())))).thenReturn(false);

Review Comment:
   I had to add this since Mockito threw an error. The cause of the errors was 
that this PR set the Mockito stubs to strict. The error was:
   
   ```
   org.mockito.exceptions.misusing.PotentialStubbingProblem: 
   Strict stubbing argument mismatch. Please check:
    - this invocation of 'removePendingTaskToCloseClean' method:
       tasksRegistry.removePendingTaskToCloseClean(
       0_3
   );
       -> at 
org.apache.kafka.streams.processor.internals.TaskManager.handleRemovedTasksFromStateUpdater(TaskManager.java:876)
    - has following stubbing(s) with different arguments:
       1. tasksRegistry.removePendingTaskToCloseClean(
       0_2
   );
         -> at 
org.apache.kafka.streams.processor.internals.TaskManagerTest.shouldHandleMultipleRemovedTasksFromStateUpdater(TaskManagerTest.java:973)
   Typically, stubbing argument mismatch indicates user mistake when writing 
tests.
   Mockito fails early so that you can debug potential problem easily.
   However, there are legit scenarios when this exception generates false 
negative signal:
     - stubbing the same method multiple times using 'given().will()' or 
'when().then()' API
       Please use 'will().given()' or 'doReturn().when()' API for stubbing.
     - stubbed method is intentionally invoked with different arguments by code 
under test
       Please use default or 'silent' JUnit Rule (equivalent of 
Strictness.LENIENT).
   For more information see javadoc for PotentialStubbingProblem class.
   ``` 
   
   In this case, the code under test calls `removePendingTaskToCloseClean()` 
multiple times with different arguments. That is normal but needs to be 
considered in the unit test.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to