Я использую EF Core 2.2.0 с InMemoryDatabase
для тестирования.Есть ли способ заставить его вызвать исключение при вызове операции, например, SaveChanges
или Find
?
Я хочу убедиться, что моя бизнес-логика обрабатывает исключение определенным образом.Я знаю, что могу абстрагировать DbContext
все вместе, но с помощью EF Core и InMemoryDatabase
я хочу получить прямой доступ к DbContext без каких-либо дополнительных абстракций.
В своем модульном тесте я сейчас создаюDbContext
как таковой:
var dbOptions = new DbContextOptionsBuilder<MyContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new MyContext(dbOptions));
И моя логика (чрезвычайно упрощенная):
public MyClass
{
private MyContext _context;
public MyClass(MyContext context)
{
_context = context;
}
public void SomeMethod()
{
try
{
*/ .. Other stuff .. */
var entity = context.Find(id);
entity.SomeProperty = "Foo";
context.SaveChanges();
}
catch(Exception e)
{
// I want to test this code...
Log.Write("Something");
DoSomethingElse();
}
}
}