我在Java
类中有这两个方法:
public CancelOrder generateCancelOrder(
final CurrentState currentState,
final Contract contract) {
Context ctx = new Context();
ctx.setVariable(
ORDER_STATE_NOW, transformForTemplate(currentState, contract));
PennyOrderDetails pennyCancelOrderDetails =
pennyCancelOrderService.requestCancelOrder(ctx);
return CancelOrderResponse.builder()
.premiumSummary(pennyCancelOrderDetails.getOrderSummary())
.build();
}
private QuoteMessageCurrentState transform(
final CurrentState currentState, final Contract contract) {
return QuoteMessageCurrentState.builder()
.fromRequest(messageTemplateChanges.change(currentState, contract))
.extras(
VoluntaryExtras.calculateVoluntaryExtrasAmount(currentState.getVoluntaryExtras()))
.build();
}
extras
是一个字符串值。是否有任何方法可以对它进行单元测试,以确认该值是什么,从而确保为它返回一个值,并且该值是正确的?
我知道私有方法不应该进行单元测试。我最近遇到了一个问题,行.extras(VoluntaryExtras.calculateVoluntaryExtrasAmount(currentState.getVoluntaryExtras()))
丢失了,但直到下游应用程序检测到问题才被发现。我想在适当的位置放置一些东西,如果它被意外删除,它不会被忽视。
2条答案
按热度按时间b09cbbtk1#
我最近遇到了一个问题,其中行.extras(VoluntaryExtras.calculateVoluntaryExtrasAmount(currentState.getVoluntaryExtras()))丢失,但直到下游应用程序检测到一个问题时才被拾取。我想放置一些东西,如果它被意外删除,它不会被忽视。
下游应用程序遇到的问题是什么?可能是某个外部状态(可能是返回的
CancelOrder
对象)受到了该行的添加或删除的影响。换句话说:
8i9zcol22#
正如@Slaw所正确建议的那样,私有方法不能进行单元测试。除了单元测试之外,还有一种方法可以进行验证。* 构造函数是验证发生的地方。即使你没有使用构建器模式,构造函数也负责确保对象在创建时处于有效状态。*
堆栈溢出线程Builder pattern validation - Effective Java中对此进行了详细说明