Ich habe eine Service-Schicht zwischen meiner App und der Mongo-Datenbank.Wie würde ich moq verwenden, um eine MongoDB-Service-Schicht zu testen?
Ich versuche, einen Komponententest mit moq zu bauen Ich bin ziemlich neu zu moq, also begann ich mit, was ich dachte, wäre ein trivialer Test.
-Code zu testen:
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;
}
Wo: Einstellungen eine Collection ist MongoDatabase ist ein MongoDBDriver.MongoDatabase
ich dies als meinen Test habe versucht:
[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 bekomme einen Fehler von "Konnte keinen parameterlosen Konstruktor finden" unter:
mongoDatabase.Setup (f => f.GetCollection (MongoCollections.Settings)). Rückgabe (collection.Object);
Der Fehler bezieht sich auf das MongoCollection-Objekt. Ich dachte nicht, dass es einen Konstrukteur gibt.
Was kann ich tun, um meinen Test zu starten?
Donot Mock, 'var Sammlung = neue Mock>();' und versuchen –
Es tut mir leid, ich verstehe nicht, was Sie vorschlagen. – Richard210363