это, вероятно, больше не актуально (и API, возможно, был изменен, чтобы быть немного более дружественным), но вот как это можно сделать (используя Moq):
var message = string.Empty;
var server = new Mock<MongoServer>(new MongoServerSettings());
server.Setup(s => s.IsDatabaseNameValid(It.IsAny<string>(), out message)).Returns(true);
var database = new Mock<MongoDatabase>(server.Object, "test", new MongoDatabaseSettings()
{
GuidRepresentation = MongoDB.Bson.GuidRepresentation.Standard,
ReadEncoding = new UTF8Encoding(),
ReadPreference = new ReadPreference(),
WriteConcern = new WriteConcern(),
WriteEncoding = new UTF8Encoding()
});
var mockedDatabase = database.Object;
Основная проблема здесьто, что MongoDatabase объект вызывает метод из MongoServer внутри своего конструктора, чтобы проверить, соответствует ли имя базы данных правилам.
Другая проблема заключается в том, что MongoDatabaseSettings следует инициализировать со всеми значениями (поскольку конструктор MongoDatabase пытается проверить их на значения по умолчанию, предоставленные сервером).
Самая большая проблема заключается в том,что этот насмешливый код может развалиться, когда выйдет новый выпуск драйвера c # :).Так что написание оберток поверх Mongo может быть лучше всего подойдет.