2010-12-14 40 views
1

J'ai des dizaines de conditions pour vérifier que les valeurs booléennes sont réglées pour sept ou huit boutons ui activés.Test de l'unité logique de l'interface utilisateur

donc je configuration des variables booléennes pour chacun des boutons (par exemple, isAction1Allowed, isAction2Allowed, etc.

Comment pourrais-je écrire un test unitaire pour ce cas?

Actuellement, j'ai une méthode contient toute la logique qui est agréable, mais pas sûr de savoir comment transformer en test unitaire (garder à l'esprit très nouveau pour MVC et tests unitaires)

public void StateChecker() { //This method resides in HtmlHelper 
    bool isAllowed1 = false; 
    bool isAllowed2 = false; 
    bool isAllowed3 = false; 

    if (condition1) { 
    isAllowed1 = true; 
    } 
    else 
    { 
    isAllowed2 = true; 
    } 

    if (condition2) { 
    isAllowed4 = true; 
    isAllowed2 = true; 
    } 

// At the end of the method 
Button1.Enabled = isAllowed1; 
Button2.Enabled = isAllowed2; 
Button3.Enabled = isAllowed3; 

} 

est-ce que je dois briser la méthode jusqu'à? y at-il une meilleure façon de faire ce que je suis en train de faire? Rememmber il y a un beaucoup plus de conditions et de boutons que l'exemple montre mais c'est l'essentiel de celui-ci. Fondamentalement, c'est un petit flux de travail ou une machine d'état.

Merci, tige.

+0

s'il vous plaît voir OP – Rod

Répondre

3

Normalement, vous devriez utiliser des modèles de vue qui sont des classes spécifiquement adaptées à vos vues. Ces classes peuvent contenir de telles propriétés d'interface utilisateur. C'est au contrôleur de les peupler à partir des classes du modèle de domaine, de sorte que vous pourriez les tester comme n'importe quelle autre classe.

Personnellement j'utilise AutoMapper pour convertir entre mes classes de modèles de domaines et mes modèles de vues, donc je teste unitairement mes classes de mappeurs qui sont responsables de cette conversion.

+0

mise à jour voté en - autant de logique que possible dans un ViewModel (ou un contrôleur en cas d'utilisation MVC) et en utilisant la liaison pour régler la l'état des boutons par rapport aux valeurs dans le contrôleur. Le contrôleur peut alors être testé unitairement. –

0

est ici un moyen (utilisation du modèle en option):

public YourModel{ 
    public bool IsAction1Allowed {get;set;} 
    } 

    public ActionResult Index(YourModel model = null){ 

    model = model ?? new Yourmodel(); 

    return View(model) 
    } 



or (use public properties) 




    public MyController:Controller{ 

    public bool IsAction1Allowed {get;set;} 

    public ActionResult Index(){ 

    vare model = Yourmodel(); 
    model.IsAction1Allow = IsAction1Allowed 

    return View(model) 
    } 



    } 


or (use constructor) 

    public MyController(Settings setting){ 


    public ActionResult Index(){ 

    vare model = Yourmodel(); 
    model.IsAction1Allow = settings.IsAction1Allowed 

    return View(model) 
    } 

}