背景
我正在使用一个使用Entity Framework Core的asp.net核心应用程序作为它的orm。对于单元测试,我在内存提供程序(Microsoft.EntityFrameworkCore.InMemory
具体版本1.1.0
)中使用microsoft来手动使用从我的DBContext派生的类来模拟数据库。
MockDBContext.cs:
public class MockDBContext:DBContext{
public MockDBContext:base(
new DbContextOptionsBuilder<DBContext>().UseInMemoryDatabase(
Guid.NewGuid().ToString()
).Options
){}
public override void Dispose(){}
public void clear(){
base.Dispose();
}
}
为每个上下文创建一个新的内存数据库唯一。
我目前正在重写Dispose,不允许我检查目标方法写入的值,其中包含using(DBContext...
,否则当我运行时,检查会抛出ObjectDisposedException
在我的测试中断言。我目前有另一个名为clear
的方法,我可以在base.Dispose
中手动调用MockDBContext
来调用。
问题
我的问题是,由于模拟数据库在内存中,我是否真的需要处理它?或者如果我不为每次测试clear
内的try finally
打电话,它会收集垃圾吗
答案 0 :(得分:0)
只要您的内存数据库上下文没有像db连接这样的依赖项或者应该在dispose上释放的文件资源,就可以将dispose留空。当没有对象的引用时,将自动收集超出范围的所有引用。