繁体   English   中英

在Spring Boot中模拟

[英]Mocking in Spring Boot

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

使用的技术:

Spring Boot 1.4.2.RELEASE,Spring 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!

对于Controller测试,您始终可以使用springs @WebMvcTest(BookCallBackController.class)批注。 另外,您还需要为对控制器的模拟Http请求配置一个mockMvc。 在那之后,您可以自动装配mockMvc @Autowired MockMvc mockMvc; 现在可以模拟对控制器@MockBean BookMessageDecoder messageDecoder;依赖@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);

    }


..
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM