Bird
Raised Fist0
JUnittesting~10 mins

when().thenReturn() stubbing in JUnit - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to stub the method call using Mockito.

JUnit
when(mockedList.[1]()).thenReturn("hello");
Drag options to blanks, or click blank then click option'
Aget(0)
Badd("test")
Cclear()
Dsize()
Attempts:
3 left
💡 Hint
Common Mistakes
Trying to stub void methods like clear() or add() which do not return values.
Using size() which returns an int, not a String.
2fill in blank
medium

Complete the code to stub the size() method to return 5.

JUnit
when(mockedList.[1]()).thenReturn(5);
Drag options to blanks, or click blank then click option'
Asize()
Blength()
Csize
Dget(0)
Attempts:
3 left
💡 Hint
Common Mistakes
Omitting parentheses in method call.
Using incorrect method names like size or length().
3fill in blank
hard

Fix the error in the stubbing code below.

JUnit
when(mockedList.get([1])).thenReturn("world");
Drag options to blanks, or click blank then click option'
Anull
B"0"
C0
D-1
Attempts:
3 left
💡 Hint
Common Mistakes
Passing a string instead of an integer index.
Using null or negative index values.
4fill in blank
hard

Fill both blanks to stub mockedMap.get() to return 10 when key "score" is used.

JUnit
when(mockedMap.[1]([2])).thenReturn(10);
Drag options to blanks, or click blank then click option'
Aget
B"score"
Cput
Dremove
Attempts:
3 left
💡 Hint
Common Mistakes
Using put or remove which are void or different methods.
Not passing the key as a string.
5fill in blank
hard

Fill all three blanks to stub mockedService.calculate() to return 42 when called with 5.

JUnit
when(mockedService.[1]([2])).thenReturn([3]);
Drag options to blanks, or click blank then click option'
Acalculate
B5
C42
Dcompute
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong method names like compute.
Passing arguments or return values as strings instead of numbers.

Practice

(1/5)
1. What is the main purpose of when().thenReturn() in JUnit testing?
easy
A. To specify a fake return value for a mocked method call
B. To execute the real method instead of a mock
C. To verify that a method was called
D. To create a new instance of the class under test

Solution

  1. Step 1: Understand mocking in tests

    Mocking replaces real objects with fake ones to control behavior during tests.
  2. Step 2: Role of when().thenReturn()

    This syntax sets a fake return value for a method call on a mock object.
  3. Final Answer:

    To specify a fake return value for a mocked method call -> Option A
  4. Quick Check:

    when().thenReturn() = fake return value [OK]
Hint: Remember: when().thenReturn() fakes method results [OK]
Common Mistakes:
  • Thinking it calls the real method
  • Using it on real objects instead of mocks
  • Confusing it with verification methods
2. Which of the following is the correct syntax to stub a method getName() of a mock object userMock to return "Alice"?
easy
A. thenReturn("Alice").when(userMock.getName());
B. when(userMock.getName()).thenReturn("Alice");
C. userMock.when(getName()).thenReturn("Alice");
D. when(userMock.getName() == "Alice");

Solution

  1. Step 1: Recall correct when().thenReturn() syntax

    The correct order is when(methodCall).thenReturn(value);
  2. Step 2: Check each option

    when(userMock.getName()).thenReturn("Alice"); matches the correct syntax exactly; others are invalid or reversed.
  3. Final Answer:

    when(userMock.getName()).thenReturn("Alice"); -> Option B
  4. Quick Check:

    Correct syntax = when().thenReturn() [OK]
Hint: Syntax is when(methodCall).thenReturn(value) [OK]
Common Mistakes:
  • Reversing when() and thenReturn() order
  • Calling when() on the mock object instead of method
  • Using equality inside when()
3. Given the code below, what will result print?
List<String> mockList = mock(List.class);
when(mockList.size()).thenReturn(5);
int result = mockList.size();
System.out.println(result);
medium
A. 0
B. null
C. 5
D. Throws NullPointerException

Solution

  1. Step 1: Understand stubbing of mockList.size()

    The size() method is stubbed to return 5 whenever called on mockList.
  2. Step 2: Check the printed result

    Calling mockList.size() returns 5 as stubbed, so result is 5 and prints 5.
  3. Final Answer:

    5 -> Option C
  4. Quick Check:

    Stubbed method returns set value [OK]
Hint: Stubbed methods return thenReturn() value, not default [OK]
Common Mistakes:
  • Assuming default mock return 0 instead of stubbed 5
  • Expecting real method execution
  • Confusing null with int return
4. Identify the error in the following stubbing code:
MyService service = new MyService();
when(service.getData()).thenReturn("Mocked Data");
medium
A. Cannot stub a method on a real object, must mock it first
B. Missing semicolon after thenReturn()
C. Incorrect method name getData()
D. thenReturn() cannot return a String

Solution

  1. Step 1: Check object type used in when()

    The object service is a real instance, not a mock, so stubbing is invalid.
  2. Step 2: Understand mocking requirement

    Stubbing works only on mock objects created by mock() or similar methods.
  3. Final Answer:

    Cannot stub a method on a real object, must mock it first -> Option A
  4. Quick Check:

    Stub only mocks, not real objects [OK]
Hint: Stub only mock objects, not real instances [OK]
Common Mistakes:
  • Trying to stub real objects
  • Ignoring need to mock before stubbing
  • Assuming thenReturn() syntax error
5. You want to stub a method calculate(int x) of a mock calculatorMock to return x * 2 for any integer input. Which is the correct way to do this using when().thenReturn()?
hard
A. when(calculatorMock.calculate(2)).thenReturn(4);
B. when(calculatorMock.calculate(anyInt())).thenReturn(x * 2);
C. when(calculatorMock.calculate(anyInt())).thenReturn(2);
D. when(calculatorMock.calculate(anyInt())).thenAnswer(invocation -> (int) invocation.getArgument(0) * 2);

Solution

  1. Step 1: Understand when().thenReturn() limitation

    thenReturn() returns a fixed value, cannot compute based on input parameter.
  2. Step 2: Use thenAnswer() for dynamic return

    thenAnswer() allows lambda to compute return based on method arguments.
  3. Final Answer:

    when(calculatorMock.calculate(anyInt())).thenAnswer(invocation -> (int) invocation.getArgument(0) * 2); -> Option D
  4. Quick Check:

    Dynamic return needs thenAnswer(), not thenReturn() [OK]
Hint: Use thenAnswer() for dynamic returns, not thenReturn() [OK]
Common Mistakes:
  • Trying to compute dynamic values with thenReturn()
  • Using undefined variable x in thenReturn()
  • Stubbing only one input value instead of anyInt()
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard