当前位置: 移动技术网 > IT编程>开发语言>Java > redisSession和mockSession

redisSession和mockSession

2019年01月19日  | 移动技术网IT编程  | 我要评论

简单谈谈

在我们进行开发过程中,单元测试是保证代码质量的最有利工具,我们每个方法都要有对应的测试,在目前开发规范中,主要把测试分为单元测试和集成测试,我们的公用方法都要写自己的单元测试,而web api的每个接口都要写集成测试。

redis session

分布式环境下,单机的session是不能满足我们需求的,所以session存储的中间件就出现了,比较常用的有数据库和redis两种,在springboot框架里,也集成了redis session的实现。

安装依赖包

'org.springframework.session:spring-session-data-redis',

配置注入

/**
 * spring session,代替了传统的session.
 */
@configuration
@enableredishttpsession
public class httpsessionconfig {

  @autowired
  private redisconnectionfactory redisconnectionfactory;

  /**
   * redis 配置.
   */
  @bean
  public redistemplate redistemplate() {
    redistemplate redistemplate = new redistemplate();
    redistemplate.setkeyserializer(new stringredisserializer());
    redistemplate.setvalueserializer(new stringredisserializer());
    redistemplate.setconnectionfactory(redisconnectionfactory);
    return redistemplate;
  }
}

使用session

 @autowired httpsession httpsession;

mocksession

在测试环境里,我们可以使用mocksession来实现对session的模拟,在进行mvc请求时,把session带在请求头上就可以了。

  mockhttpsession session;
  @autowired
  private webapplicationcontext webapplicationcontext;
  private mockmvc mockmvc;
  
    * 初始化.
   */
  @before
  public void init() {
    this.mockmvc = mockmvcbuilders.webappcontextsetup(webapplicationcontext).build();
    session = new mockhttpsession();
    session.setattribute("distributor", distributorbaseinfo.builder().id(1l).build());
  }
  
  @test
  public void testsession() throws exception {
    mockmvc
        .perform(
            get("/v1/api/user")
                .accept(mediatype.application_json_utf8)
                .session(session)
                .param("pagecurrent", "1")
                .param("pagesize", "1"))
        .andexpect(status().isok())
        .andexpect(jsonpath("$.records.length()").value(1));
  }

上面代码中展示了,如何在单元测试中模拟session,事实上,我们http请求里的session已经被mocksession覆盖了,我们在对应的接口上打断点可以看到,session使用的是mock出来的。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网