我有一個數據庫,儲存庫類:如何模擬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
。