現在、検証属性を試していますが、カスタム検証属性を持つ EmailAddress を含む ViewModel を検証しようとしています。
public class UserLoginModel
{
[Required]
[EmailAddress]
public string email { get; set; }
[Required]
public string password { get; set; }
public bool rememberMe { get; set; }
}
虚偽のメール アドレスを指定してビューモデルの検証を試みる単体テストを作成しました。
[TestMethod]
public void TestingInvalidEmailAddress()
{
UserLoginModel model = new UserLoginModel();
model = GetAValidLoginModel(); //Get a default-model where all parameters are correct
model.email = "thisisnotavalidemail.com";
ValidationContext context = new ValidationContext(model, null, null);
var results = new List<ValidationResult>();
bool validModel= Validator.TryValidateObject(model, context, results);
//This is always true
Assert.IsFalse(validModel);
}
このテストの結果は常に False です。
間違いを犯したのではないかと思ったので、属性を確認しました。
[TestMethod]
public void Email()
{
string email;
var attr = new EmailAddressAttribute();
email = "myemail@domain.com";
Assert.IsTrue(attr.IsValid(email));
email = "thisisnotavalidemail.com";
Assert.IsFalse(attr.IsValid(email)); //If this fails, the test is successfull
}
そして、まったく同じメールアドレスを使用して、テストに合格しました.
また、ブラウザでテストすると、正しく検証されます。
では、最初のテスト方法で私の電子メール アドレスが無効であると通知されないのはなぜですか?