我有ASP.NET MVC Core应用程序,我正在编写单元测试。我正在使用InMemoryDatabase,它运行良好。我想为测试运行初始化一次数据库。所以,我有一个静态类:
public static class DbInitialize {
private static MyDbContext _db;
public static MyDbContext Initialize() {
if (_db != null) {
return _db;
}
DbContextOptionsBuilder<MyDbContext> optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.UseInMemoryDatabase();
_db = new MyDbContext(optionsBuilder.Options);
....... (populating mock data) .............
_db.SaveChanges();
return _db;
}
}
适用于单个测试类(例如HomeControllerTests
)及其所有特定测试。但是,如果我有另一个测试类(CustomerControllerTests
)并且我调用DbInitialize.Initialize()
- 我看到_db
为空,但数据库没有被销毁 - 我在{{1 }}。有没有更好的方法来初始化数据库只有一次,并获得一个&#34;连接字符串&#34; (因为缺少更好的词)如果它已经启动并运行了吗?