当前位置:首页 > 编程教程 > java技术文章 > Spring Boot单元测试中使用mockito框架mock掉整个RedisTemplate的示例

Spring Boot单元测试中使用mockito框架mock掉整个RedisTemplate的知识点详解

  • 发布时间:
  • 作者:码农之家
  • 点击:182

这篇文章主要知识点是关于Spring、Boot、单元测试、mockito、mock、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

一步一步学Spring Boot 2
  • 类型:微服务项目实战大小:72.04 MB格式:PDF作者:黄文毅
立即下载

Spring Boot单元测试中使用mockito框架mock掉整个RedisTemplate的示例

概述

当我们使用单元测试来验证应用程序代码时,如果代码中需要访问Redis,那么为了保证单元测试不依赖Redis,需要将整个Redis mock掉。在Spring Boot中结合mockito很容易做到这一点,如下代码:

import org.mockito.Mockito;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.*;
import org.springframework.test.context.ActiveProfiles;
import static org.mockito.Mockito.when;
/**
 * mock掉整个RedisTemplate
 */
@ActiveProfiles("uttest")
@Configuration
public class RedisTemplateMocker {
  @Bean
  public RedisTemplate redisTemplate() {
    RedisTemplate redisTemplate = Mockito.mock(RedisTemplate.class);
    ValueOperations valueOperations = Mockito.mock(ValueOperations.class);
    SetOperations setOperations = Mockito.mock(SetOperations.class);
    HashOperations hashOperations = redisTemplate.opsForHash();
    ListOperations listOperations = redisTemplate.opsForList();
    ZSetOperations zSetOperations = redisTemplate.opsForZSet();
    when(redisTemplate.opsForSet()).thenReturn(setOperations);
    when(redisTemplate.opsForValue()).thenReturn(valueOperations);
    when(redisTemplate.opsForHash()).thenReturn(hashOperations);
    when(redisTemplate.opsForList()).thenReturn(listOperations);
    when(redisTemplate.opsForZSet()).thenReturn(zSetOperations);
    RedisOperations redisOperations = Mockito.mock(RedisOperations.class);
    RedisConnection redisConnection = Mockito.mock(RedisConnection.class);
    RedisConnectionFactory redisConnectionFactory = Mockito.mock(RedisConnectionFactory.class);
    when(redisTemplate.getConnectionFactory()).thenReturn(redisConnectionFactory);
    when(valueOperations.getOperations()).thenReturn(redisOperations);
    when(redisTemplate.getConnectionFactory().getConnection()).thenReturn(redisConnection);
    return redisTemplate;
  }
}

上面的代码已经mock掉大部分的Redis操作了,网友想mock掉其他操作,自行加上即可。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

SpringBoot 相关电子书
学习笔记
网友NO.401680

SpringBoot DBUnit 单元测试(小结)

DBunit 是一种扩展于JUnit的数据库驱动测试框架,它使数据库在测试过程之间处于一种已知状态,如果一个测试用例对数据库造成了破坏性影响,它可以帮助避免造成后面的测试失败或者给出错误结果。 DBunit通过维护真实数据库与数据集(IDataSet)之间的关系来发现与暴露测试过程中的问题。IDataSet 代表一个或多个表的数据。此处IDataSet可以自建,可以由数据库导出,并以多种方式体现,xml文件、XLS文件和数据库查询数据等。 基于DBUnit 的测试的主要接口是IDataSet,可以将数据库模式的全部内容表示为单个IDataSet 实例。这些表本身由Itable 实例来表示。 1. pom文件配置 dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId /dependency dependency groupIdcom.github.springtestdbunit/groupId artifactIdspring-test-dbunit/artifactId version1.3.0/version scopetest/scope /dependency depe……

网友NO.431989

详解SpringBoot restful api的单元测试

现在我们来利用Spring Boot来构建一个RestFul API,具体如下: 1.添加Springboot测试注解 @RunWith(SpringRunner.class)@SpringBootTestpublic class UserControllerTest {} 2.伪造mvc环境 // 注入Spring 工厂 @Autowired private WebApplicationContext wac; //伪造mvc环境 private MockMvc mockMvc; @Before public void setup(){ mockMvc = MockMvcBuilders.webAppContextSetup(wac).build(); } 3.引入静态方法 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; 3.编写测试方法 @Test public void whenXXXXS……

网友NO.363016

SpringBoot Controller Post接口单元测试示例

概述 在日常的开发中,我们一般会定义一个 service 层,用于实现业务逻辑,并且针对 service 层会有与之对应的齐全的覆盖率高的单元测试。而对于 controller 层,一般不怎么做单元测试,因为主要的核心业务逻辑都在 service 层里, controller 层只是做转发,调用 service 层接口而已。但是还是建议使用单元测试简单的将 controller 的方法跑一下,看看转发和数据转换的代码是否能正常工作。 在 Spring Boot 里对 controller 层进行单元测试非常简单,只需要几个注解和一点点辅助代码即可搞定。 依赖的包 dependency groupIdorg.junit.jupiter/groupId artifactIdjunit-jupiter-api/artifactId scopetest/scope /dependency dependency groupIdorg.junit.jupiter/groupId artifactIdjunit-jupiter-engine/artifactId scopetest/scope /dependency dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-test/artifactId scopetest/scope /dependen……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com