私はデータベースリポジトリクラスを持っています:
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
。