繁体   English   中英

如何为 if 条件编写此 void 方法的测试用例

[英]How to write test case for this void method for if condition

public void setRefundIdForPrepaid(RefundReturnRequest refundReturnRequest) { 
    if(StringUtils.isBlank (refundReturnRequest.getRefundRequest().getRefundId())) {
        refundReturnRequest.getRefundRequest().setRefundId (Integer.toString(ThreadLocalRandom.current().nextInt(999999999)));
    }
}

您可以在方法执行后测试RefundReturnRequest refundReturnRequest的refundReturnRequest。

@Test
void testSetRefundIdForPrepaid(){
   //build param
   RefundReturnRequest refundReturnRequest = new RefundReturnRequest();
   //executetd
   service.setRefundIdForPrepaid(refundReturnRequest);
   //test result
   assertThat(refundReturnRequest.getRefundRequest().getRefundId()).isEqualTo(xxx);
}

您可以将 RefundReturnRequest 设置为 Spy 并验证该集合是否已被调用。 如果你想进一步测试它,你可以传递一个 Argument Captor 并检查随机数是否在某个范围内。 但这是一种我认为在测试中没有多大价值的方法。 如果您只想为 If 逻辑编写 2 个测试用例,只需验证 set 方法已被调用,而另一个测试尚未被调用。

因此,您需要一个模拟的refundReturnRequest,它在调用 getRefundRequest 后返回一个 Spy RefundRequest。 并验证二传手。

@Test
void TestsetRefundIdForPrepaid(){
//test case
}

暂无
暂无

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

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