我目前正在为一个.net核心应用程序编写xUnit测试。这是我在Startup中设置DbContext的方式。
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));
现在我想让xUnit测试用SQLite来执行 这就要求我能够检测应用程序是否正常执行 或者测试是否在我的Startup类中执行 然后要根据这个情况来设置DbContext。
有什么方法可以做到这一点吗?我在网上查了很多资料,但一直没有找到好的解决办法。
想了解你想做什么。我不确定我是否明白,但我可以给一些提示。如果你想在单元测试中用EF测试数据库,你可以做以下工作。
创建一个上下文选项生成器对象,使用内存中的数据库
var options = new DbContextOptionsBuilder<YourContext>()
.UseInMemoryDatabase(databaseName: "TestingDb")
.Options;
使用此选项对象创建一个上下文
var context = new YourContext(options);
并使用上述上下文创建一个存储库。
_repository= new YourRepository(context);
现在使用这个新的存储库,你将有一个合适的内存数据库用于你的测试。使用DbContextOptionsBuilder,你可以按照你的意愿改变目标数据库。希望我的回答对你有所帮助。