Injecting Mockito Mock objects using Spring JavaConfig and @Autowired

前端 未结 3 1096
执笔经年
执笔经年 2021-02-07 22:39

I\'m trying to replace an @Autowired object with a Mockito mock object. The usual way of doing this was with xml using Springockito:



        
3条回答
  •  闹比i
    闹比i (楼主)
    2021-02-07 23:07

    Outdated and deprecated!

    Read about mocking and spying in Spring Boot 1.4

    Please read also @ethesx answer, Springockito is unmaintaned

    Old answer

    This is possible now to mock Spring application without any XML file with Springockito-annotations.. This solution works also with Spring Boot.

    import static org.mockito.BDDMockito.*;
    import org.kubek2k.springockito.annotations.*;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(classes = Application.class, 
         loader = SpringockitoAnnotatedContextLoader.class)
    @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
    public class MainControllerTest {
    
        @Autowired
        MainController mainController;
    
        @Autowired
        @ReplaceWithMock
        FooService fooService;
    
        @Test
        public void shouldGetBar() {
            //given
            given(fooService.result("foo")).willReturn("bar");
    
            //when
            Bar bar build = fooService.getBar("foo");
    
            //then
            assertThat(bar).isNotNull();
        }
    }
    

    Dependencies: org.kubek2k:springockito-annotations:1.0.9

提交回复
热议问题