C# 强制DbContext在单元测试中对SaveChanges()引发异常
我使用EF Core 2.2.0和InMemoryDatabase进行测试。有没有办法让它在调用操作时抛出异常,例如C# 强制DbContext在单元测试中对SaveChanges()引发异常,c#,unit-testing,entity-framework-core,ef-core-2.2,C#,Unit Testing,Entity Framework Core,Ef Core 2.2,我使用EF Core 2.2.0和InMemoryDatabase进行测试。有没有办法让它在调用操作时抛出异常,例如SaveChanges或Find 我想验证我的业务逻辑是否以特定方式处理异常。我知道我可以同时抽象DbContext,但是使用EF-Core和InMemoryDatabase我希望直接访问DbContext而不需要任何抽象 在我的单元测试中,我目前正在创建DbContext,如下所示: var dbOptions = new DbContextOptionsBuilder<M
SaveChanges
或Find
我想验证我的业务逻辑是否以特定方式处理异常。我知道我可以同时抽象DbContext
,但是使用EF-Core和InMemoryDatabase
我希望直接访问DbContext而不需要任何抽象
在我的单元测试中,我目前正在创建DbContext
,如下所示:
var dbOptions = new DbContextOptionsBuilder<MyContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
.Options;
var context = new MyContext(dbOptions));
您可以使用我的EntityFrameworkCoreMock库作为基础,请参阅 然后重写
SaveChanges
方法的行为,如下所示:
dbContextMock.Setup(x => x.SaveChanges()).Callback(() => throw new Exception());
如果不使用模拟的抽象,继承可能是路径。创建派生类,重写所需成员以在调用时引发异常,相应地更新测试。
dbContextMock.Setup(x => x.SaveChanges()).Callback(() => throw new Exception());