如何编写 IValidatableObject Validate 的 xUnit 测试?

问题描述 投票:0回答:1

我有 IValidatableObject 和 Validate 方法。如何为这个对象和这个方法编写单元测试? (我使用 xUnit)。如何模拟上下文?以下对象的代码。

public class Settings: IValidatableObject
{
    [Required]
    public int Id { get; set; }
    public string Name { get; set; }
    public Category Category { get; set; } //enum

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (!Enum.IsDefined(typeof(Category), Category))
        {
            yield return new ValidationResult("Invalid Category", new[] { nameof(Category) });
        }
    }
}
c# .net-6.0 xunit.net
1个回答
0
投票

在您的班级中,只有

Validate
方法具有逻辑,对于测试很有用。以下是如何设置的示例:

[TestCase(10_000)]
[TestCase(10_000_000)]
public void WhenInvalidCategory_ReturnsError(int category)
{
    // Arrange
    var settings = new Settings();
    settings.Category = (Category)category;

    // Act
    var validationResults = settings.Validate(
        new ValidationContext());

    // Assert
    Assert.IsNotEmpty(validationResults);
}

您只需根据

链接帖子
调整ValidationContext

的创建即可
© www.soinside.com 2019 - 2024. All rights reserved.