/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockitousage.stubbing; import org.junit.Test; import org.mockito.AdditionalAnswers; import org.mockito.Mock; import org.mockito.exceptions.base.MockitoException; import org.mockitousage.IMethods; import org.mockitoutil.TestBase; import java.util.List; import static java.util.Arrays.asList; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.fail; import static org.mockito.Mockito.when; public class StubbingWithExtraAnswersTest extends TestBase { @Mock private IMethods mock; @Test public void shouldWorkAsStandardMockito() throws Exception { //when List<Integer> list = asList(1, 2, 3); when(mock.objectReturningMethodNoArgs()).thenAnswer(AdditionalAnswers.returnsElementsOf(list)); //then assertEquals(1, mock.objectReturningMethodNoArgs()); assertEquals(2, mock.objectReturningMethodNoArgs()); assertEquals(3, mock.objectReturningMethodNoArgs()); //last element is returned continuously assertEquals(3, mock.objectReturningMethodNoArgs()); assertEquals(3, mock.objectReturningMethodNoArgs()); } @Test public void shouldReturnNullIfNecessary() throws Exception { //when List<Integer> list = asList(1, null); when(mock.objectReturningMethodNoArgs()).thenAnswer(AdditionalAnswers.returnsElementsOf(list)); //then assertEquals(1, mock.objectReturningMethodNoArgs()); assertEquals(null, mock.objectReturningMethodNoArgs()); assertEquals(null, mock.objectReturningMethodNoArgs()); } @Test public void shouldScreamWhenNullPassed() throws Exception { try { //when AdditionalAnswers.returnsElementsOf(null); //then fail(); } catch (MockitoException e) {} } }