【发布时间】:2021-09-01 14:23:26
【问题描述】:
[TestClass]
public class MyTests
{
private CarsContext carsContext;
private Mock<IMongoDatabase> _mockDB;
private Mock<IMongoClient> _mockClient;
[TestInitialize]
public void Setup()
{
_mockClient = new Mock<IMongoClient>();
_mockDB = new Mock<IMongoDatabase>();
db = Guid.NewGuid().ToString();
_mockClient.Setup(c => c.GetDatabase(db, null)).Returns(_mockDB.Object);
carsContext = new CarsContext(_mockClient.Object, db);
}
[TestMethod]
public async Task TestOne()
{
var objToInsert = new Car{ ... };
//always null (carsContext Client is always null and db property is populated with Mocked object.
var cars = carsContext.GetCollection<Car>("cars");
cars.InsertOne(objToInsert);
}
}
public class Car : Entity
{
public string Name {get; set;}
...
}
public class CarContext : ICarContext
{
private readonly IMongoDatabase _db;
public IMongoClient MongoClient
{
get { return _db.Client; } // always null
}
public CarContext(IMongoClient mongoClient, string db)
{
_db = mongoClient.GetDatabase(db); // _db.Client is always null
}
}
【问题讨论】:
-
您没有设置您的
_mockDB实例以从Client属性返回您的模拟客户端。
标签: c# .net mongodb unit-testing