Ho un livello di servizio tra la mia app e il database mongo.Come utilizzerei moq per testare un livello di servizio MongoDB?
Sto provando a costruire un test di unità usando moq Sono abbastanza nuovo a moq così ho iniziato con quello che pensavo sarebbe stato un banale test.
Codice di prova:
public List<BsonDocument> GetAllSettings()
{
var collection = MongoDatabase.GetCollection<BsonDocument>("Settings");
var query = from e in collection.AsQueryable()
select e;
var settings = query.ToList();
return settings;
}
Dove: Impostazioni è una raccolta MongoDatabase è un MongoDBDriver.MongoDatabase
Ho provato questo come il mio test:
[Test()]
public void GetAllSettingsTest()
{
//Arrange
BsonDocument doc01 = new BsonDocument();
BsonDocument doc02 = new BsonDocument();
var mongoDatabase = new Mock<MongoDatabase>();
var collection = new Mock<MongoCollection<BsonDocument>>();
mongoDatabase.Setup(f => f.GetCollection(MongoCollection.Settings)).Returns(collection.Object);
collection.Object.Insert(doc01);
collection.Object.Insert(doc02);
ILogger logger = new Logger();
DatabaseClient.DatabaseClient target = new DatabaseClient.DatabaseClient(logger);
target.MongoDatabase = mongoDatabase.Object;
MongoCursor<BsonDocument> cursor = collection.Object.FindAllAs<BsonDocument>();
List<BsonDocument> expected = cursor.ToList();
List<BsonDocument> actual;
//Act
actual = target.GetAllSettings();
//Assert
Assert.AreEqual(expected, actual);
}
I ricevo un errore di "Impossibile trovare un costruttore senza parametri" a:
mongoDatabase.Setup (f => f.GetCollection (MongoCollections.Settings)). Restituisce (collection.Object);
L'errore si riferisce all'oggetto MongoCollection. Non pensavo che avesse un costruttore.
Cosa posso fare per eseguire il test?
Donot mock, 'var collection = new Mock>();' e prova –
Mi dispiace, non capisco cosa stai suggerendo. – Richard210363