为了账号安全,请及时绑定邮箱和手机立即绑定

如何将单元测试添加到我的流畅验证类中?

如何将单元测试添加到我的流畅验证类中?

C#
慕姐8265434 2021-11-28 16:26:45
我有 ac# 模型类(Address.cs),它看起来像这样......namespace myProject.Models{    [Validator(typeof(AddressValidator))]    public class Address    {        public string AddressLine1 { get; set; }        public string PostCode { get; set; }    }}我有一个验证器类(AddressValidator.cs),它看起来像这样......namespace myProject.Validation{    public class AddressValidator : AbstractValidator<Address>    {        public AddressValidator()        {            RuleFor(x => x.PostCode).NotEmpty().WithMessage("The Postcode is required");            RuleFor(x => x.AddressLine1).MaximumLength(40).WithMessage("The first line of the address must be {MaxLength} characters or less");        }    }}我想知道如何为我的验证器类添加单元测试,以便我可以测试,例如,“地址行 1”最多需要 40 个字符?
查看完整描述

2 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您可以使用以下内容(这使用 xunit,根据您的首选框架进行调整)


public class AddressValidationShould

{

  private AddressValidator Validator {get;}

  public AddressValidationShould()

  {

    Validator = new AddressValidator();

  }


  [Fact]

  public void NotAllowEmptyPostcode()

  {

    var address = new Address(); // You should create a valid address object here

    address.Postcode = string.empty; // and then invalidate the specific things you want to test

    Validator.Validate(address).IsValid.Should().BeFalse();

  }

}

...显然创建其他测试来涵盖应该/不应该允许的其他事情。比如AddressLine140以上无效,40以下有效。


查看完整回答
反对 回复 2021-11-28
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

使用 MSTest,您可以编写


[TestMethod]

public void NotAllowEmptyPostcode()

{

    // Given

    var address = new Address(); // You should create a valid address object here

    address.Postcode = string.empty; // invalidate the specific property


    // When

    var result = validator.Validate(address);

    

    // Then (Assertions)

    Assert.That(result.Errors.Any(o => o.PropertyName== "Postcode"));

}


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 196 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信