我有一个数据库,储存库类:如何模拟codefirst策略创建的EntityFramework数据库?
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
}
}
}
我需要试块的方法private void Save()
catch
,所以我需要的东西像...
[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
。