Comment puis-je l'unité de test de mon custom de validation de l'attribut

J'ai un custom asp.net mvc classe de validation de l'attribut.
Ma question est comment puis-je l'unité de la tester?
Ce serait une chose à tester que la classe a l'attribut, mais ce ne serait pas fait de test que la logique à l'intérieur. C'est ce que je veux tester.

[Serializable]
[EligabilityStudentDebtsAttribute(ErrorMessage = "You must answer yes or no to all questions")]
public class Eligability
{
    [BooleanRequiredToBeTrue(ErrorMessage = "You must agree to the statements listed")]
    public bool StatementAgree { get; set; }

    [Required(ErrorMessage = "Please choose an option")]
    public bool? Income { get; set; }

.....supprimé pour des raisons de concision
}

[AttributeUsage(AttributeTargets.Class)]
public class EligabilityStudentDebtsAttribute : ValidationAttribute
{
    //If AnyDebts is true then 
    //StudentDebts must be true or false

    public override bool IsValid(object value)
    {
        Eligability elig = (Eligability)value;
        bool ok = true;
        if (elig.AnyDebts == true)
        {
            if (elig.StudentDebts == null)
            {
                ok = false;
            }
        }
        return ok;

    }
}

J'ai essayé d'écrire un essai, comme suit, mais cela ne fonctionne pas:

[TestMethod]
public void Eligability_model_StudentDebts_is_required_if_AnyDebts_is_true()
{

   //Arrange
   var eligability = new Eligability();
   var controller = new ApplicationController();

   //Act
   controller.ModelState.Clear();
   controller.ValidateModel(eligability);
   var actionResult = controller.Section2(eligability,null,string.Empty);

   //Assert
   Assert.IsInstanceOfType(actionResult, typeof(ViewResult));
   Assert.AreEqual(string.Empty, ((ViewResult)actionResult).ViewName);
   Assert.AreEqual(eligability, ((ViewResult)actionResult).ViewData.Model);
   Assert.IsFalse(((ViewResult)actionResult).ViewData.ModelState.IsValid);
}

La ModelStateDictionary ne contient pas la clé pour cet attribut personnalisé.
Il contient uniquement les attributs de la norme attributs de validation.

Pourquoi est-ce?

Quelle est la meilleure façon de tester ces attributs personnalisés?

InformationsquelleAutor MightyAtom | 2011-01-12