当在Mockito中使用doReturn
时,它没有thenReturn
,所以我很困惑为什么它一直抛出UnfinishedStubbingException Unfinished stubbing detected here: E.g. thenReturn() may be missing.
。它为我所有的doReturn
抛出这个错误。
我的代码:
public List<Users> getUsers(String userId) {
List<Users> usersList = new ArrayList<>();
Table table = dynamoDB.getTable("users");
ItemCollection<QueryOutcome> items = table.getIndex("userIndex").query(QuerySpec);
Iterator<Item> iterator = items.iterator();
while (iterator.hasNext()) {
list.add(Util.jsonToObject(iterator.next().toJSONPretty(), Users.class));
}
return usersList;
}
测试类别:
List<Users> mockList = mock(List.class);
Table mockTable = mock(Table.class);
Users details = new Users("", "", "");
ItemCollection<QueryOutcome> mockCollection = mock(ItemCollection.class);
IteratorSupport<Item, QueryOutcome> mockIterator = mock(IteratorSupport.class);
doReturn(mockTable).when(dynamoDB.getTable("users"));
doReturn(mockCollection).when(mockTable.getIndex("")).query(mock(QuerySpec.class));
doReturn(mockIterator).when(mockCollection).iterator();
doReturn(true).doReturn(false).when(mockIterator).hasNext();
doReturn(true).when(mockList).add(details);
assertNotNull(dynamoService.getUser("").get(0));
1条答案
按热度按时间tv6aics11#
错误是正确的mockito语法。所以这完全是关于你希望你的语句如何显示以及你的代码风格是关于什么的。
doReturn
和thenReturn
或多或少是相同的,但在访问mockito语句的不同方式中使用。所以结论是:你混淆了风格,他们不是100%的行为相同的方式,所以你不能混淆。纠正你的syntak在其中一种方式,它会工作-即使在你嘲笑的方式很多:)