gpt4 book ai didi

entity-framework - 单元测试 Entity Framework 验证

转载 作者:行者123 更新时间:2023-12-02 05:37:10 25 4
gpt4 key购买 nike

我已经使用 IValidatableObject 为一些 Entity Framework 对象编写了一些自定义验证,并且我已经向这些对象添加了一些 DataAnnotations 以进行验证。

我想测试验证是否满足所需的验证(确保自定义验证正常工作,并且所做的任何更改都保留这些数据注释等...)但我无法确定如何在单元中运行验证在不调用 SaveChanges 的情况下进行测试(我不想这样做,因为如果存在问题并且验证不起作用,它将写入数据源)

我想做这样的事情:

[TestMethod]
public void InvalidStartDate_StartDateAfterEndDate()
{
var header = new Header()
{
StartDate = DateTime.Now.AddDays(15),
EndDate = DateTime.Now.AddDays(-15)
};
var actual = header.IsValid();
var expected = false;
Assert.AreEqual(expected, actual);
}

或者类似的东西

[TestMethod]
public void InvalidStartDate_StartDateAfterEndDate()
{
var header = new Header()
{
StartDate = DateTime.Now.AddDays(15),
EndDate = DateTime.Now.AddDays(-15)
};
var actual = header.GetValidationErrors().Count;
var expected = 0;
Assert.AreEqual(expected, actual);
}

但似乎无法找到一种无需调用保存更改即可运行验证的方法,有没有办法做到这一点?

最佳答案

您可以调用 Validator验证对象。

[TestMethod]
public void InvalidStartDate_StartDateAfterEndDate()
{
var header = new Header()
{
StartDate = DateTime.Now.AddDays(15),
EndDate = DateTime.Now.AddDays(-15)
};

var context = new ValidationContext(header, null, null);
var results = new List<ValidationResult>();

var actual = Validator.TryValidateObject(header, context, results);
var expected = false;

Assert.AreEqual(expected, actual);
}

关于entity-framework - 单元测试 Entity Framework 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com