尝试使用MSTest为C#中的DataType.PhoneNumber编写单元测试

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

我是MSTest的新手。我的数据类型为PhoneNumber:

public class PhoneNumber : ValueObject
{
    [DataType(DataType.PhoneNumber)]
    public string PhNumber { get; private set; }
}

现在,我需要为其编写单元测试。几个问题:

  1. MS Test是否有内置功能来验证数据类型?
  2. 是否存在有关如何验证电话号码的示例代码?
c# mstest phone-number
1个回答
0
投票

改为使用[Phone]属性。

[[Phone]是从PhoneAttribute派生的,并且覆盖了DataTypeAttribute方法,该方法检查该值实际上是有效的电话号码。

使用中

IsValid

对电话号码验证不做任何事情,并且在上面显示的示例中使用不正确

[DataType(DataType.PhoneNumber)] 主要用作创建自定义和目标验证属性的基础属性。

出于演示的目的,说我要测试以下课程

DataTypeAttribute

查看以下用于有效和无效电话号码的MSTest测试

public class PhoneNumber : ValueObject {
    public PhoneNumber(string number) {
        Number = phoneNumber;
    }

    [Phone]
    public string Number { get; private set; }

    //...
}

请注意使用静态[TestClass] public class PhoneNumberTests { [DataTestMethod] [DataRow("555-5555")] [DataRow("555-555-5555")] [DataRow("1-555-555-5555")] public void Should_Be_Valid(string number) { //Arrange var subject = new PhoneNumber(number); var context = new ValidationContext(subject, null, null); var results = new List<ValidationResult>(); //Act var actual = Validator.TryValidateObject(subject, context, results, true); //Assert actual.Should().BeTrue(); results.Should().BeEmpty(); } [DataTestMethod] [DataRow("abcd")] [DataRow("5555a")] [DataRow("abc5555a")] public void Should_Not_Be_Valid(string number) { //Arrange var subject = new PhoneNumber(number); var context = new ValidationContext(subject, null, null); var results = new List<ValidationResult>(); //Act var actual = Validator.TryValidateObject(subject, context, results, true); //Assert actual.Should().BeFalse(); results.Should().NotBeEmpty(); } } 类来评估装饰的属性并验证对象是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.