12637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin/* 22637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * Copyright (c) 2007 Mockito contributors 32637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin * This program is made available under the terms of the MIT License. 42637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin */ 52637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpackage org.mockitousage.misuse; 62637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 72637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.junit.Test; 82637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport org.mockito.exceptions.misusing.WrongTypeOfReturnValue; 92637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 102637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.assertj.core.api.Assertions.assertThat; 112637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.junit.Assert.fail; 122637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinimport static org.mockito.Mockito.*; 132637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 142637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffinpublic class SpyStubbingMisuseTest { 152637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 162637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin @Test 172637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public void nestedWhenTest() { 182637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Strategy mfoo = mock(Strategy.class); 192637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Sampler mpoo = mock(Sampler.class); 202637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Producer out = spy(new Producer(mfoo)); 212637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 222637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin try { 232637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin when(out.produce()).thenReturn(mpoo); 242637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin fail(); 252637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } catch (WrongTypeOfReturnValue e) { 262637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin assertThat(e.getMessage()).contains("spy").contains("syntax").contains("doReturn|Throw"); 272637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 282637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 292637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 302637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public class Sample { } 312637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 322637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public class Strategy { 332637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Sample getSample() { 342637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return new Sample(); 352637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 362637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 372637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 382637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public class Sampler { 392637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Sample sample; 402637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Sampler(Strategy f) { 412637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin sample = f.getSample(); 422637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 432637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 442637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin 452637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin public class Producer { 462637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Strategy strategy; 472637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Producer(Strategy f) { 482637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin strategy = f; 492637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 502637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin Sampler produce() { 512637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin return new Sampler(strategy); 522637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 532637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin } 542637d96c202372854a7c71466ddcc6e90fc4fc53Paul Duffin} 55