繁体   English   中英

Spring 单元测试 [webflux,云]

[英]Spring unit tests [webflux, cloud]

我是单元测试主题的新手,我的问题是我是否应该对方法的每一行代码执行测试,或者我可以通过哪些方式执行这些测试以获得良好的覆盖率,如果也是,是否应该例外评估与否?

例如,如果我有这个服务方法,它也使用一些与其他微服务通信的助手,有人可以给我如何执行的例子,非常感谢。

public Mono<BankAccountDto> save(BankAccountDto bankAccount) {
  var count = findAccountsByCustomerId(bankAccount.getCustomerId()).count();

  var customerDto = webClientCustomer
        .findCustomerById(bankAccount.getCustomerId());
  var accountType = bankAccount.getAccountType();

  return customerDto
      .zipWith(count)
      .flatMap(tuple -> {
        final CustomerDto custDto = tuple.getT1();
        final long sizeAccounts = tuple.getT2();
        final var customerType = custDto.getCustomerType();
        
        if (webClientCustomer.isCustomerAuthorized(customerType, accountType, sizeAccounts)) {
          return saveBankAccountAndRole(bankAccount);
        }
        return Mono.error(new Exception("....."));
      });

}

鉴于您想对该代码进行单元测试,您需要模拟诸如webClientCustomer之类的依赖项。

然后,您应该始终测试代码中的相关路径。 查看您的代码,我只看到三个要测试的相关代码:

  • 如果webClientCustomer.findCustomerById(bankAccount.getCustomerId());该方法返回一个空的Mono 返回一个空的Mono
  • saveBankAccountAndRole(bankAccount)并且您的save()方法实际上返回saveBankAccountAndRole(bankAccount)返回的任何内容。 如果webClientCustomer.isCustomerAuthorized(customerType, accountType, sizeAccounts)true ,就会发生这种情况;
  • 如果webClientCustomer.isCustomerAuthorized(customerType, accountType, sizeAccounts)false ,则该方法返回异常。

暂无
暂无

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

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