我有一个数据库存储库类:
public class DatabaseRepository : IRepository
{
private readonly Database _database;
public DatabaseRepository(Database database)
{
_database = database;
}
...
public void Delete<TObject>(TObject entity) where TObject : BaseEntity
{
var dbSet = DbSet<TObject>();
dbSet.Remove(entity);
Save();
}
...
private void Save()
{
try
{
_database.SaveChanges();
}
catch(DbEntityValidationException dbEx)
{
// do some action
}
}
}
我需要测试方法catch
块private void Save()
,所以我需要类似...
[TestMethod]
public void SaveShouldDoSomethingIfDabaBaseConnectFalls()
{
Mock<Database> mockDb = new Mock<Database>();
mockDb.Setup(db => db.SaveChange()).Throws(new DbEntityValidationException());
IRepository repository = new DatabaseRepository(mockDb.Object);
...
}
所以我的问题是如何模拟实体框架数据库?Mock<Database> mockDb = new Mock<Database>();
- 怎么写正确???为了嘲笑我使用Moq
.