JUnit: дразнящий DBCursor не работает должным образом - PullRequest
0 голосов
/ 02 июля 2018

У меня есть некоторые проблемы с издевательством над JacksonDBCollection. Если я попытаюсь проверить свой метод (см. Код ниже), тогда я получу следующие исключения:

java.lang.NullPointerException
    at org.mongojack.DBCursor.<init>(DBCursor.java:85)
    at org.mongojack.JacksonDBCollection.find(JacksonDBCollection.java:1156)

.....

Проблема в этой строке: DBCursor<MyObject> cursor = mongojackCol.find(searchQuery);, потому что dbCursor равен нулю. Как я могу издеваться над mongojackCol, чтобы вернуть смоделированный dbCursor (см. Эту строку: dbCursor = (DBCursor<MyObject>)mock(DBCursor.class))? спасибо

public MyObject getMyObjectById(String id) {


JacksonDBCollection<MyObject, String> mongojackCol =
JacksonDBCollection.wrap(collection, MyObject.class, String.class);
MyObject myObject = null;
try {

ObjectId objectId = new ObjectId(id);

BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put(MyObject.MONGO_ID, objectId);

DBCursor<MyObject> cursor = mongojackCol.find(searchQuery);

if (cursor.hasNext()) {
myObject = cursor.next();
}

} catch (IllegalArgumentException e) {
return myObject; 
}

return myObject;
}

@Test
public void getMyObjectByIdTest() {
 db = mock(DB.class);
 dbCollection = mock(DBCollection.class);

 dbCursor = (DBCursor<MyObject>)mock(DBCursor.class);

 jacksonDBCollection = (JacksonDBCollection<MyObject, String>)mock(JacksonDBCollection.class);

 MyObject myObject = new MyObject(x, y);

 when(dbCursor.size()).thenReturn(1);        
 when(dbCursor.next()).thenReturn(myObject);
 when(jacksonDBCollection.find(any(BasicDBObject.class))).thenReturn(dbCursor);

 MyObject dr = mongoStoreDAO.getMyObjectById("abababababababababababab");   
 assertThat(dr).isEqualTo(myObject);  
}
...