我有以下两种我想测试的方法
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进行测试。有几件事让我感到困惑(或无法工作(。
首先,使用amazonDynamoDBClient
创建DynamoDBMapper
。因此,如果在我的班级I Mock
AmazonDynamoDB
中,dynamoDBMapper
将如何创建?
我将如何测试我的功能实际设置投影正确?
我将如何测试PaginedScanlist?
它违反了依赖注入原则,不允许您创建单位测试。
订单不应创建任何对象,它应该通过构造函数或设置器方法作为依赖项接收它们。例如。您可以将dynamodbscanexpression -factory和dynamodbmapper传递到订单的构造函数。然后,您将能够用Mockito模拟它们。