Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.mockito
Class AdditionalAnswers

    java.lang.Object
      org.mockito.AdditionalAnswers

    public class AdditionalAnswers

extends java.lang.Object

Additional answers provides factory methods for less common answers.

Currently offer answers that can return the parameter of an invocation at a certain position.

See factory methods for more information : `returnsFirstArg()`, `returnsSecondArg()`, `returnsLastArg()` and `returnsArgAt(int)`

Since:
  1.9.5

Constructor Summary
`AdditionalAnswers()`

Method Summary
`static
`<T> Answer<T>`
` | `delegatesTo(java.lang.Object delegate)` An answer that directly forwards the calls to the delegate.
`static
`<T> Answer<T>`
` | `returnsArgAt(int position)` Returns the parameter of an invocation at the given position.
`static
`<T> Answer<T>`
` | `returnsElementsOf(java.util.Collection<?> elements)` Returns elements of the collection.
`static
`<T> Answer<T>`
` | `returnsFirstArg()` Returns the first parameter of an invocation.
`static
`<T> Answer<T>`
` | `returnsLastArg()` Returns the last parameter of an invocation.
`static
`<T> Answer<T>`
` | `returnsSecondArg()` Returns the second parameter of an invocation.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AdditionalAnswers

    public AdditionalAnswers()

Method Detail

### returnsFirstArg

    public static <T> Answer<T> returnsFirstArg()

  Returns the first parameter of an invocation.

  This additional answer could be used at stub time using the `then|do|will`Answer`` methods. For example :

      given(carKeyFob.authenticate(carKey)).will(returnsFirstArg());
       daAnswer(returnsFirstArg()).when(carKeyFob).authenticate(carKey)

  Type Parameters:
    `T` - Return type of the invocation.
  Returns:
    Answer that will return the first argument of the invocation.
  Since:
    1.9.5

### returnsSecondArg

    public static <T> Answer<T> returnsSecondArg()

  Returns the second parameter of an invocation.

  This additional answer could be used at stub time using the `then|do|will`Answer`` methods. For example :

      given(trader.apply(leesFormula, onCreditDefaultSwap)).will(returnsSecondArg());
       daAnswer(returnsSecondArg()).when(trader).apply(leesFormula, onCreditDefaultSwap)

  Type Parameters:
    `T` - Return type of the invocation.
  Returns:
    Answer that will return the second argument of the invocation.
  Since:
    1.9.5

### returnsLastArg

    public static <T> Answer<T> returnsLastArg()

  Returns the last parameter of an invocation.

  This additional answer could be used at stub time using the `then|do|will`Answer`` methods. For example :

      given(person.remember(dream1, dream2, dream3, dream4)).will(returnsLastArg());
       daAnswer(returnsLastArg()).when(person).remember(dream1, dream2, dream3, dream4)

  Type Parameters:
    `T` - Return type of the invocation.
  Returns:
    Answer that will return the last argument of the invocation.
  Since:
    1.9.5

### returnsArgAt

    public static <T> Answer<T> returnsArgAt(int position)

  Returns the parameter of an invocation at the given position.

  This additional answer could be used at stub time using the `then|do|will`Answer`` methods. For example :

      given(person.remember(dream1, dream2, dream3, dream4)).will(returnsArgAt(3));
       daAnswer(returnsArgAt(3)).when(person).remember(dream1, dream2, dream3, dream4)

  Type Parameters:
    `T` - Return type of the invocation.
  Returns:
    Answer that will return the second argument of the invocation.
  Since:
    1.9.5

### delegatesTo

    public static <T> Answer<T> delegatesTo(java.lang.Object delegate)

  An answer that directly forwards the calls to the delegate.

  Useful for spies or partial mocks of objects that are difficult to mock or spy using the usual spy API. Possible use cases:

  - Final classes but with an interface
  - Already custom proxied object
  - Special objects with a finalize method, i.e. to avoid executing it 2 times
  For more details including the use cases reported by users take a look at issue 145.

  The difference with the regular spy:

  - The regular spy (`Mockito.spy(Object)`) contains all state from the spied instance and the methods are invoked on the spy. The spied instance is only used at mock creation to copy the state from. If you call a method on a regular spy and it internally calls other methods on this spy, those calls are remembered for verifications, and they can be effectively stubbed.
  - The mock that delegates simply delegates all methods to the delegate. The delegate is used all the time as methods are delegated onto it. If you call a method on a mock that delegates and it internally calls other methods on this mock, those calls are not remembered for verifications, stubbing does not have effect on them, too. Mock that delegates is less powerful than the regular spy but it is useful when the regular spy cannot be created.
  An example with a final class that we want to delegate to:

         final class DontYouDareToMockMe implements list { ... }

         DontYouDareToMockMe awesomeList = new DontYouDareToMockMe();

         List mock = mock(List.class, delegatesTo(awesomeList));

  This feature suffers from the same drawback as the spy. The mock will call the delegate if you use regular when().then() stubbing style. Since the real implementation is called this might have some side effects. Therefore you should to use the doReturn|Throw|Answer|CallRealMethod stubbing style. Example:

         List listWithDelegate = mock(List.class, AdditionalAnswers.delegatesTo(awesomeList));

         //Impossible: real method is called so listWithDelegate.get(0) throws IndexOutOfBoundsException (the list is yet empty)
         when(listWithDelegate.get(0)).thenReturn("foo");

         //You have to use doReturn() for stubbing
         doReturn("foo").when(listWithDelegate).get(0);

  Parameters:
    `delegate` - The delegate to forward calls to.
  Returns:
    the answer
  Since:
    1.9.5

### returnsElementsOf

    public static <T> Answer<T> returnsElementsOf(java.util.Collection<?> elements)

  Returns elements of the collection. Keeps returning the last element forever. Might be useful on occasion when you have a collection of elements to return.

         //this:
         when(mock.foo()).thenReturn(1, 2, 3);

         //is equivalent to:
         when(mock.foo()).thenReturn(new ReturnsElementsOf(Arrays.asList(1, 2, 3)));

  Parameters:
    `elements` - The collection of elements to return.
  Returns:
    the answer
  Since:
    1.9.5

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD