【发布时间】:2019-04-01 12:53:11
【问题描述】:
我正在尝试模拟外部调用以及 ArgumentMatcher 以将输入值与请求匹配。但是当我尝试从 ArgumentMatcher 对象中获取地图时,它给了我一个空值。
Mockito.when(
dynamoDbMapper.scanPage(eq(ABC.class), argThat(new ArgumentMatcher<DynamoDBScanExpression>() {
@Override
public boolean matches(Object argument)
{
DynamoDBScanExpression scanExp = (DynamoDBScanExpression) argument;
Assert.assertEquals("5", scanExp.getLimit());
Assert.assertEquals("xyz",scanExp.getFilterExpression());
Assert.assertEquals(new HashMap(), scanExp.getExpressionAttributeNames());
return true;
}
}))).thenReturn(prepareScanResponse());
这个表达式 scanExp.getExpressionAttributeNames() 理想情况下应该返回一个地图,但给我一个空值。
假设我必须模拟一个输入包含映射的请求,然后尝试在包含映射作为属性的那个 inout 对象上实现 ArgumentMatcher,我该怎么做?
【问题讨论】:
-
你想完成什么?您是否尝试获取
scanPage方法的参数?如果是这样,为什么不使用.thenAnswer选项?如果我知道您要做什么,我可以举个例子。 -
我正在尝试匹配我在 DynamoDB 的 scanPage 函数中作为 DynamoDBScanExpression 传递的请求参数。 DynamoDBScanExpression 包含我在实际代码中的请求中发送的映射参数。现在我想在 ArgumentMatcher 下的这个测试中匹配这个参数。