2017-03-09 73 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); 

    } 


.. 
}