He seguido dos métodos que quiero probar
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()); } }Ahora, quiero hacer pruebas usando Mockito para esta clase. Hay un par de cosas que me confunden (o no puedo hacer que funcionen).
En primer lugar, se crea DynamoDBMapper mediante amazonDynamoDBClient . Entonces, si en mi clase AmazonDynamoDB Mock ¿cómo se crearía el dynamoDBMapper ?
¿Cómo probaría que mi función realmente está configurando correctamente la proyección?
¿Cómo probaría en paginatedScanList?
Es una violación del principio de inyección de dependencia que no le permite crear una prueba unitaria.
Las órdenes no deben crear ningún objeto, deben recibirlos como dependencias a través de métodos constructores o setter. Por ejemplo, podría pasar DynamoDBScanExpressionFactory y DynamoDBMapper al constructor de pedidos. Entonces podrías burlarte de ellos con mockito.