XUnit测试DbContext没有处理

时间:2017-04-14 06:45:38

标签: c# entity-framework-core xunit

我正在为DbContext实现一个XUnit测试,似乎DbContext没有正确处理。当我调试第一个测试时,它可以工作,但是在第二个测试中,抛出了已经添加的错误class FoodTableViewCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() // Initialization code } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } override func prepareForReuse() { self.accessoryType = UITableViewCellAccessoryType.none //add code to reset selection if there is any other selection mechanism } }

添加观看后,在第二次测试中,listAds为空,但在_context被调用之前,其值为Advertisements

_context.Advertisements.AddRange(listAds);

1 个答案:

答案 0 :(得分:7)

上下文被处理,但不是"内存数据库"本身。

那是"设计"允许您测试您测试的类正在创建它自己的DBContext实例的场景 - 否则您无法为它们准备数据。

您有两种可能性:

  1. 创建"不同的数据库"对于databaseName的每项测试,代码为.UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString())

  2. 创建后(或context.Database.EnsureDeleted())强制数据库使用Dispose销毁/重新创建。

  3. 对于您的测试类,方法2看起来更合适,但它取决于您。

    文档:https://docs.microsoft.com/en-us/ef/core/miscellaneous/testing/in-memory