[英]How to do integ test using mockito
我有以下两种要测试的方法
public class Orders {
private final LambdaLogger logger;
private final DynamoDBMapper dynamoDBMapper;
public Orders(LambdaLogger logger, AmazonDynamoDB amazonDynamoDB){
this.logger = logger;
this.dynamoDBMapper = new DynamoDBMapper(amazonDynamoDB);
}
public List<Orders> getOrders(){
logger.log("getting all orders");
DynamoDBScanExpression scanExpression = new DynamoDBScanExpression()
.withProjectionExpression("OrderId");
logger.log("Expression created");
PaginatedScanList<Orders> scan = dynamoDBMapper.scan(Orders.class, scanExpression);
return scan.stream()
.collect(Collectors.toList());
}
}
现在,我想使用Mockito对该课程进行测试。 有些事情让我感到困惑(或无法工作)。
首先, DynamoDBMapper
正在使用创建amazonDynamoDBClient
。 因此,如果在我的类中Mock
AmazonDynamoDB
,将如何创建dynamoDBMapper
?
如何测试我的功能实际上设置了正确的投影?
我将如何在paginatedScanList上进行测试?
这违反了依赖注入原则 ,后者不允许您创建单元测试。
订单不应创建任何对象,它应通过构造函数或setter方法将它们作为依赖项接收。 例如,您可以将DynamoDBScanExpressionFactory和DynamoDBMapper传递给Orders的构造函数。 这样,您就可以使用Mockito模拟他们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.