2017-03-09 60 views
0

我已经使用Spring Initializer,嵌入式Tomcat,Thymeleaf模板引擎以及程序包生成了一个Spring Boot Web应用程序作为可执行JAR文件。使用在Spring Boot中嘲笑

技术:

春季启动1.4.2.RELEASE,春天4.3.4.RELEASE,Thymeleaf 2.1.5.RELEASE,Tomcat的嵌入8.5.6时,Maven 3,Java的8

我有这些类:

package com.tdk.helper; 


@Component 
public class BookMessageDecoder implements MessageDecoder { 

    private String messageData; 



    public BookMessageDecoder() { 
     super(); 
    } 


    /** 
    * @param data4 
    */ 
    public BookMessageDecoder(String messageData) { 
     this.messageData=messageData; 
    } 
.. 
} 

@RestController 
public class BookCallBackController { 


    BookSystemManager bookSystemManager; 

    @Autowired 
    BookMessageDecoder messageDecoder; 

    @Autowired 
    public BookCallBackController(BookSystemManager bookSystemManager) { 
     this.bookSystemManager = bookSystemManager; 
    } 

.. 
} 


@RunWith(SpringRunner.class) 
public class BookCallBackControllerTests { 

    @MockBean 
    BookMessageDecoder messageDecoder; 


    private BookCallBackController controller; 

    @Before 
    public void setUp() throws Exception { 

     given(this.messageDecoder.hasAlarm()).willReturn(false); 

     controller = new BookCallBackController(new StubBookSystemManager()); 

    } 
.. 
} 

即使我嘲笑bean bookMes​​sageDecoder,当我使用它时是null!

回答

0

对于控制器测试,您始终可以使用弹簧@WebMvcTest(BookCallBackController.class)注释。 此外,您还需要为您的控制器配置一个mockMvc模拟Http请求。 之后,你可以自动装配mockMvc @Autowired MockMvc mockMvc; 现在你可以嘲笑你依赖性控制器@MockBean BookMessageDecoder messageDecoder;

@RunWith(SpringRunner.class) 
@WebMvcTest(BookCallBackController.class) 
@AutoConfigureMockMvc 
public class BookCallBackControllerTests { 

    @MockBean 
    BookMessageDecoder messageDecoder; 

    @Autowired 
    MockMvc mockMvc; 

    @Before 
    public void setUp() throws Exception { 

     given(this.messageDecoder.hasAlarm()).willReturn(false); 

    } 


.. 
}