Создайте новое пользовательское исключение и вызовите его, если в нем отсутствует пользовательский атрибут:
[Test]
public void ShouldFailIfEmailAddressAttributeIsMissingFromFieldName()
{
//--Arrange
var model = new { Field = 1 };
//--Act
Should.Throw<EmailAddressAttributeNotFoundException>(() => model.ShouldValidateTheseFields(
new List<FieldValidation>
{
new EmailAddressFieldValidation
{
ErrorId = 1,
ErrorMessage = "Message",
FieldName = nameof(model.Field)
}
}));
}
Чтобы проверить, не выполнено ли утверждение, необходимо перехватить исключение Assertion.В этом случае, поскольку используется структураlyly, это исключение mustly.ShouldAssertException, которое генерируется в методе расширения:
[Test]
public void ShouldFailIfEmailAddressAttributeHasWrongErrorId()
{
//--Arrange
var model = new TestModelTwo();
//--Act
Should.Throw<ShouldAssertException>(() => model.ShouldValidateTheseFields(
new List<FieldValidation>
{
new EmailAddressFieldValidation
{
ErrorId = 2,
ErrorMessage = "Message",
FieldName = nameof(model.Field)
}
}));
}
Использование класса:
public class TestModel
{
[EmailAddress(1)]
public string Field { get; set; }
}
Ошибкаутверждение в методе расширения равно ErrorId.ShouldBe (2), когда оно фактически равно 1 в модели.