关于springboot:近期学习总结

2次阅读

共计 2184 个字符,预计需要花费 6 分钟才能阅读完成。

前言

首先我最次要的问题就是心急,对于我的项目任务分配不明确,不可能很好的将当前任务分工,导致每次提交 pr 代码量绝对比拟大,不仅减少本人的出错概率和测试难度,同时也给其余的合作成员带来很大的难度。

实例

以用户登录后盾为例,在曾经跳过很多坑的状况下,第二次再去弄用户登录的后盾,本认为能够很好的解决,然而没有很好的将代码分块,导致代码量比拟大,同时在进行单元测试的时候,遇到了很多问题。

单元测试

万物开头难,对于我来说,起初我是很恶感单元测试的,我不得不抵赖它对于团队合作的微小益处,然而因为锤炼比拟少,每次测试时候总是不违心用这种形式进行测试。在这里也感激潘老师的督促,可能让本人静下心来去理解单元测试每个代码的意思。上面我将用一个具体的单元测试进行举例:

@Test
  void login() throws UnsupportedEncodingException {
    // 复制老我的项目的,用于增加正文

    // 结构申请 url
    String url = "http://localhost:" + port + "/user/login";

    // 因为 spring boot 不提供主动配置的 RestTemplate bean,他会提供一个 restTemplateBuilder bean
    // 可用于在须要的时候创立 RestTemplate 实例。// restTemplate 用于发动申请,其中 exchange 能够指定申请办法
    RestTemplate restTemplate = this.restTemplateBuilder.build();
    // 结构一个申请的 headers
    HttpHeaders headers = this.getChromeHeaders();

    // 没有认证信息时 401
    // 预言发动申请抛出的异样为 HttpClientErrorException。Assertions.assertThrows(HttpClientErrorException.class, () -> restTemplate.getForObject(url, JSONObject.class));
    try {
      // HttpEntity 包含申请头和申请主体
      HttpEntity entity = new HttpEntity(headers);
      // 调用 exchange 办法发动 method 为 get,url 为 xxx,申请头和申请主体为 entity,返回类型为 User 实体的
      restTemplate.exchange(url, HttpMethod.GET, entity, User.class);
    } catch (HttpClientErrorException e) {
      // 捕捉异样为 401,未认证
      Assertions.assertEquals(e.getStatusCode().value(), HttpStatus.UNAUTHORIZED.value());
    }

    // basic 认证模式, 结构前台传送信息,headers = this.getChromeHeaders();
    // 增加认证信息
    String auth = Base64.getEncoder().encodeToString((appProperties.getUsername() + ":" + appProperties.getPassword()).getBytes("utf-8"));
    headers.add("Authorization", "Basic" + auth);

    // 结构一个申请信息,申请头为 headers 内容
    HttpEntity entity = new HttpEntity(headers);

    // 获取响应实体,通过 get 申请
    ResponseEntity<User> result = restTemplate.exchange(url, HttpMethod.GET, entity, User.class);
    // 从响应头中获取参数 x -auth-token,并断言非空(后盾响应之后返回了 token)String xAuthToken = result.getHeaders().get("x-auth-token").get(0);
    Assertions.assertNotNull(xAuthToken);
    // 获取响应主体,断言它的用户名等于 xxx
    User body = result.getBody();
    Assertions.assertEquals(appProperties.getUsername(), body.getUsername());

    // x-auth-token 认证
    // 第一次申请调配了一个 token,第二次申请间接应用调配的 token
    headers = this.getChromeHeaders();
    headers.add("x-auth-token", xAuthToken);
    // 获取完判断取得的 user 是之前的 user。User user = restTemplate.exchange(url, HttpMethod.GET, entity, User.class).getBody();
    Assertions.assertEquals(UserInit.username, user.getUsername());
  }

总结:

要应用麻利开发(将大的工作一直调配成各个小工作,保障每个小工作最晚当天能够实现)+ 单元测试的办法。

正文完
 0