Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法模拟dynamoDBMapper.query_Java_Unit Testing_Mockito - Fatal编程技术网

Java 无法模拟dynamoDBMapper.query

Java 无法模拟dynamoDBMapper.query,java,unit-testing,mockito,Java,Unit Testing,Mockito,下面是我要测试的一段代码 但是代码没有被捕获在AmazonServiceException下,而是继续下一个业务逻辑。这让我觉得我可能没有正确地模仿。我在这里错过了什么 您的代码看起来不错,但我注意到您正在模拟.scan方法。。。在您的实现中,您正在使用.query 我通常使用jmockit,在jmockit中,这样做会导致返回一个空对象,我认为在mokito中,它最终会返回null。如果这是真的,将抛出一个NPE,由于捕获了错误的异常,您的测试将继续进行。您的代码看起来不错,但是我注意到您正

下面是我要测试的一段代码


但是代码没有被捕获在
AmazonServiceException
下,而是继续下一个业务逻辑。这让我觉得我可能没有正确地模仿。我在这里错过了什么

您的代码看起来不错,但我注意到您正在模拟.scan方法。。。在您的实现中,您正在使用.query


我通常使用jmockit,在jmockit中,这样做会导致返回一个空对象,我认为在mokito中,它最终会返回null。如果这是真的,将抛出一个NPE,由于捕获了错误的异常,您的测试将继续进行。

您的代码看起来不错,但是我注意到您正在模拟.scan方法。。。在您的实现中,您正在使用.query


我通常使用jmockit,在jmockit中,这样做会导致返回一个空对象,我认为在mokito中,它最终会返回null。如果这是真的,将抛出一个NPE,并且由于捕获了错误的异常,您的测试将继续进行。

您确定正确设置了模拟吗?代码看起来很好。。。我能想到的唯一一件事是,您可能没有使用db mapper在对象中设置mock。。。在您的实现中,您正在使用.querys。有时,您知道您所做的是正确的,但是您忘记了您已经很久没有喝过咖啡因了!这时你需要第二只眼睛。。。将
scan
替换为
query
修复了以下问题:)请将您的帖子作为答案,以便我可以将其作为正确答案接受。您确定正确设置了模拟吗?代码看起来很好。。。我能想到的唯一一件事是,您可能没有使用db mapper在对象中设置mock。。。在您的实现中,您正在使用.querys。有时,您知道您所做的是正确的,但是您忘记了您已经很久没有喝过咖啡因了!这时你需要第二只眼睛。。。将
scan
替换为
query
修复了问题:)请将您的帖子作为答案写下来,这样我才能接受它作为正确答案。
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
private DynamoDBQueryExpression<Order> createQueryForLatestOrders(String orderId, String storeId, LocalDateTime time) { // ... implementation // }
@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());
}