无法模拟PaginatedScanList(DynamoDB扫描的返回对象)

时间:2019-04-02 15:05:23

标签: mockito amazon-dynamodb dynamodb-queries

我正在编写一个UnitTest,我需要在其中模拟dynamoDBMapper.scan(Class clazz,DynamoDBScanExpression scanExpression)以返回PaginatedScanList

现在,我希望此列表包含一个对象,以便以后可以断言该列表是否包含正确的字段。

Mockito.when(
                dynamoDbMapper.scan(eq(ABC.class), argThat(new ArgumentMatcher<DynamoDBScanExpression>() {

                    @Override
                    public boolean matches(Object argument)
                    {
                        DynamoDBScanExpression scanExp = (DynamoDBScanExpression) argument;

                        return true;
                    }

                }))).thenReturn((PaginatedScanList<ABC>) prepareScanResponse());

        List<ABC> listReturned = methodClass.methodToTest(field1,
                field2);

        Assert.assertNotNull(listReturned);
        Assert.assertNotNull(listReturned.get(0));
        Assert.assertTrue(listReturned.get(0).field1);

在上面的代码中,我试图模拟DynamoDB.scan调用,并返回一个PaginatedScanList,其中存储了一个对象。 然后,稍后当我调用“ methodToTest”时,它将执行其it语句并返回PaginatedScanList,并且它应声明其余的语句。 我得到的错误是: “ java.lang.UnsupportedOperationException:这是不可修改的列表” 可能是因为我无法在此列表中添加任何内容。 但是,如果我不能添加它,那么如何测试这种特殊情况呢?

0 个答案:

没有答案