C#实体测试-调试时,测试通过,但在运行模式下失败
我想检查我的remove方法是否有效:)我在数据库中添加了一个元组 测试方法C#实体测试-调试时,测试通过,但在运行模式下失败,c#,unit-testing,testing,C#,Unit Testing,Testing,我想检查我的remove方法是否有效:)我在数据库中添加了一个元组 测试方法 [TestMethod] public void DeleteIngredient() { using (var ctx = new TestDbContext()) { //Arrange Ingredient ingredient = new TestClass.Ingredient(); in
[TestMethod]
public void DeleteIngredient()
{
using (var ctx = new TestDbContext())
{
//Arrange
Ingredient ingredient = new TestClass.Ingredient();
ingredient.Id = 1;
ingredient.Name = "Watermelon";
ingredient.VegeOrVegetarian = VeganType.Both;
//Act
ctx.ingredients.Add(ingredient);
ctx.SaveChanges();
IngredientService service = new IngredientService(ctx);
service.removeIngredient(1);
service.saveChanges();
//Assert
Assert.AreEqual(0, ctx.ingredients.Count());
}
}
服务
public class IngredientService
{
private readonly TestDbContext _TestDbContext;
public IngredientService(TestDbContext TestDbContext)
{
_TestDbContext = TestDbContext;
}
public List<Ingredient> getIngredients()
{
return _TestDbContext.ingredients.ToList();
}
public void removeIngredient(int id)
{
var toRemove = _TestDbContext.ingredients.Find(id);
_TestDbContext.ingredients.Remove(toRemove);
}
public void saveChanges()
{
_TestDbContext.SaveChanges();
}
}
我被告知考试通过了。
但在运行模式下运行所有测试(包括此删除)后,我得到一个错误
Assert.AreEqual失败,应为:。实际的
我认为上下文有问题。有没有解决这个问题的线索?简短版本:
不要使用DbContext获取验证所需的数据。要获取此数据,请不要使用ORM方法:DbConnection、DbCommand等
测试算法:
对不起我的英语 我不知道您的数据库是如何配置的,但是您可以尝试调用
service.removeingreement(component.Id)代码>而不是?您可能最终得到的其他id不是1ye我知道它只是临时添加的XD您确定您没有运行使用相同数据库的其他测试吗?您能否在开始时添加一个clear并保存更改以确保我不知道您的数据库是如何配置的,但您能否尝试调用service.removeingredit(component.Id)代码>而不是?您可能最终得到的其他id不是1ye我知道它只是临时添加的XD您确定您没有运行使用相同数据库的其他测试吗?能否在开头添加一个clear并保存更改以确保
Assert.AreEqual(0, ctx.ingredients.Count());