Hier Stück Code verspotten, die ich willUnable dynamoDBMapper.query
... testen
DynamoDBQueryExpression<Order> queryExpression = createQueryForLatestOrders(orderId, storeId, time);
PaginatedQueryList<Order> orders;
try{
orders = dynamoDBMapper.query(Order.class, queryExpression);
} catch (AmazonServiceException ase){
if (AmazonServiceException.ErrorType.Client.equals(ase.getErrorType())) {
throw new InternalServiceException(ase);
} else {
throw new DependencyFailureException(ase);
}
} catch (AmazonClientException e) {
throw new DependencyFailureException(e);
}
// other business logic
Die Funktion, die Abfrage schafft wie diese
definiert istprivate DynamoDBQueryExpression<Order> createQueryForLatestOrders(String orderId, String storeId, LocalDateTime time) { // ... implementation // }
...
und ich versuche es so zu testen
@Test(expected = DependencyFailureException.class)
public void testGetOrdersThrowsAWSServerException() throws Exception {
when(mockDynamoDBMapper.scan(eq(Order.class), any())).thenThrow(AmazonServiceException.class);
mockOrdersManager.getOrders(orderId, storeId, LocalDateTime.now());
}
Aber anstatt unter AmazonServiceException
gefangen zu werden, bewegt sich der Code auf der nächsten Geschäftslogik. Das lässt mich denken, dass ich wahrscheinlich nicht richtig spotte. Was ich hier vermisse.
Sind Sie sicher, dass Sie den Mock korrekt einstellen? Der Code sieht gut aus ... Das einzige, was mir einfällt, ist, dass Sie den Mock möglicherweise nicht mit dem DB-Mapper im Objekt setzen. – AnthonyJClink
Außerdem habe ich festgestellt, dass Sie sich über die .scan-Methode lustig machen ... In Ihrer Implementierung verwenden Sie .query – AnthonyJClink
manchmal wissen Sie, was Sie tun, ist richtig, aber Sie vergessen, dass Sie Koffein in der längsten Zeit nicht gehabt haben! und das ist, wenn Sie ein zweites Auge brauchen ... das Ersetzen von "scan" durch "query" behebt das Problem :) Bitte schreiben Sie Ihren Beitrag als Antwort, damit ich sie als richtige Antwort akzeptieren kann. –