我是MSTest的新手。我的数据类型为PhoneNumber:
public class PhoneNumber : ValueObject
{
[DataType(DataType.PhoneNumber)]
public string PhNumber { get; private set; }
}
现在,我需要为其编写单元测试。几个问题:
改为使用[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();
}
}
类来评估装饰的属性并验证对象是否有效。