Tôi có một lớp dịch vụ giữa ứng dụng của tôi và cơ sở dữ liệu mongo.Làm cách nào để sử dụng moq để kiểm tra lớp dịch vụ MongoDB?
Tôi đang cố gắng xây dựng một bài kiểm tra đơn vị sử dụng moq Tôi khá mới để moq vì vậy tôi bắt đầu với những gì tôi nghĩ sẽ là một thử nghiệm tầm thường.
Mã để kiểm tra:
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;
}
đâu: Cài đặt là một Bộ sưu tập MongoDatabase là một MongoDBDriver.MongoDatabase
tôi đã cố gắng này là thử nghiệm của tôi:
[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);
}
tôi đang gặp lỗi "Không thể tìm thấy hàm tạo tham số" tại:
mongoDatabase.Setup (f => f.GetCollection (MongoCollections.Settings)). Returns (collection.Object);
Lỗi đề cập đến đối tượng MongoCollection. Tôi không nghĩ rằng nó có một nhà xây dựng.
Tôi có thể làm gì để chạy thử nghiệm?
Donot mock, 'var collection = new Mock>();' và thử –
Tôi xin lỗi, tôi không hiểu những gì bạn đang đề xuất. – Richard210363