繁体   English   中英

如何使用Mockito进行完整测试

[英]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.

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