I have a database repository class:
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
}
}
}
I need to test catch
block of private void Save()
method, so I need something like...
[TestMethod]
public void SaveShouldDoSomethingIfDabaBaseConnectFalls()
{
Mock<Database> mockDb = new Mock<Database>();
mockDb.Setup(db => db.SaveChange()).Throws(new DbEntityValidationException());
IRepository repository = new DatabaseRepository(mockDb.Object);
...
}
So my question is how can I mock entity framework Database? Mock<Database> mockDb = new Mock<Database>();
- how to write it correctly???? For mocking I use Moq
.