Mam warstwę usługi między moją aplikacją a bazą danych mongo.Jak używać funkcji moq do testowania warstwy usługi MongoDB?
Próbuję zbudować test jednostkowy za pomocą moq Jestem całkiem nowy do moq, więc zacząłem od tego, co uważałem za trywialny test.
kod do testu:
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;
}
Gdzie: Ustawienia to zbiór MongoDatabase jest MongoDBDriver.MongoDatabase
Próbowałem tego jako mojego testu:
[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 "Otrzymuję błąd z" Nie można znaleźć konstruktora bez parametrów "pod adresem:
mongoDatabase.Setup (f => f.GetCollection (MongoCollections.Settings)). Returns (collection.Object);
Błąd odnosi się do obiektu MongoCollection. Nie myślałem, że ma konstruktora.
Co mogę zrobić, aby uruchomić test?
Donot mock, 'var collection = new Mock>();' and try –
Przykro mi, nie rozumiem co sugerujesz. – Richard210363