У меня есть некоторые проблемы с издевательством над 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);
}