Mock使用

简介: SpringBoot/SpringMvc使用Mock/MockBean 做单元测试

Mock依赖:
SpringBoot依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>spring-test</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.1.RELEASE</version>
            <scope>test</scope>
        </dependency>

SpringMvc依赖:

<dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.8.5</version>
            <scope>test</scope>
        </dependency>
  <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>

 <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

Mock对象

DemoDao demoDao = mock(DemoDao.class);

对象注入到bean

ReflectionTestUtils.setField(demoBean, "demoDao", demoDao);

mock的对象只对demoBean有效,其他地方用到了demoDao,需要重新注入(ReflectionTestUtils.setField(demoBean2, "demoDao", demoDao);)

MockBean

@Service
public class DemoServiceMock {
    @MockBean
    protected DemoService demoService;
    /**
     * mock调用方法
     */
    public void mockPInstanceNull(String param) {
        when(demoService.demoTest(ArgumentMatchers.eq(param))).thenReturn("demoTestString");
    } }

注意:
1.DemoServiceMock 不能被继承,否则会报错

  1. @MockBean
    protected DemoService demoService;

不能在其他地方声明,否则报错
3.尽量使用eq()方法,慎用any**()方法

目录
相关文章
|
1月前
|
JSON 前端开发 API
mock基本使用
【10月更文挑战第4天】
39 1
|
2月前
|
存储 缓存 NoSQL
webFilter实现mock接口
这段代码实现了一个名为 `MockFilter` 的类,继承自 `WebFilter` 接口,用于处理 HTTP 请求和响应。它通过从 Redis 缓存中获取配置信息来决定是否使用模拟数据或缓存数据来响应请求。如果开启了生产模式或关闭了模拟和缓存功能,则直接放行请求。否则,它会检查请求体并根据配置返回相应的模拟或缓存数据。同时,该过滤器支持对响应结果进行处理,并将结果存储回 Redis 中。
|
4月前
|
测试技术
详解单元测试问题之处理@Mock注解时mock对象的创建如何解决
详解单元测试问题之处理@Mock注解时mock对象的创建如何解决
44 1
|
4月前
|
前端开发
什么是 Mock 测试?
Mock 是在前后端分离开发中,用于模拟后端数据的工具,让前端能提前开发而无需等待真实接口。它的重要性在于加速协同开发,避免因数据延迟导致的阻塞。通过工具如 Apifox,可以创建请求,设定 Mock 参数和测试脚本,进行 Mock 测试以确保数据符合预期。了解 Mock.js 语法有助于更好地进行 Mock 测试。
|
6月前
|
JavaScript 数据安全/隐私保护
Mock
Mock
86 0
|
前端开发 JavaScript
Mock 语法讲解
Mock 是生成随机数据,拦截 Ajax 请求的 JavaScript 库。 本文来介绍下 Mock 的常用语法。
Mock 语法讲解
|
NoSQL JavaScript 前端开发
部署自己的MOCK(一)
本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。
部署自己的MOCK(一)
|
数据可视化 前端开发 Java
Mock工具介绍,为什么使用Mock?
Mock工具介绍,为什么使用Mock?
606 0
部署自己的MOCK(二)
本文适合团队内部没有MOCK服务,对mock有实际需要的小伙伴。
|
敏捷开发 设计模式 Java
mock打桩之EasyMock
TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD虽是敏捷方法的核心实践,但不只使用于XP(Extreme Programming),同样可以适用于其他开发方法和过程。
mock打桩之EasyMock