I have a service level between my application and the mongo database.
I am trying to build a unit test using moq. I am new to moq, so I started with what I think would be a trivial test.
Verification Code:
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; }
Where: Settings is a MongoDatabase collection - this is MongoDBDriver.MongoDatabase
I tried this as my 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 get an error "Could not find constructor without parameters" at:
mongoDatabase.Setup (f => f.GetCollection (MongoCollections.Settings)). Returns (collection.Object);
The error relates to the MongoCollection object. I did not think he had a constructor.
What can I do to run my test?
Richard210363
source share