Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UI逻辑单元测试_C#_Asp.net_Asp.net Mvc_Unit Testing - Fatal编程技术网

C# UI逻辑单元测试

C# UI逻辑单元测试,c#,asp.net,asp.net-mvc,unit-testing,C#,Asp.net,Asp.net Mvc,Unit Testing,我有几十个条件来检查为七个或八个ui按钮启用属性设置布尔值 因此,我为每个按钮设置布尔变量(例如,isAction1Allowed、isAction2Allowed等) 我如何为这种情况编写单元测试 目前,我有一个方法,它包含了所有的逻辑,很好,但不确定如何转化为单元测试(请记住,MVC和单元测试非常新) 我必须打破这个方法吗?有没有更好的方法来完成我想做的事情?记住,这里的条件和按钮比示例中显示的要多得多,但这就是它的要点。基本上,它是一个小型工作流或状态机 谢谢, rod.通常,您应该使用视

我有几十个条件来检查为七个或八个ui按钮启用属性设置布尔值

因此,我为每个按钮设置布尔变量(例如,isAction1Allowed、isAction2Allowed等)

我如何为这种情况编写单元测试

目前,我有一个方法,它包含了所有的逻辑,很好,但不确定如何转化为单元测试(请记住,MVC和单元测试非常新)

我必须打破这个方法吗?有没有更好的方法来完成我想做的事情?记住,这里的条件和按钮比示例中显示的要多得多,但这就是它的要点。基本上,它是一个小型工作流或状态机

谢谢,
rod.

通常,您应该使用视图模型,这些模型是专门为您的视图调整的类。这些类可能包含这样的UI属性。由控制器从域模型类填充它们,以便您可以将它们作为任何其他类进行测试

就我个人而言,我通常在域模型类和视图模型之间进行转换,因此我需要对负责此转换的映射器类进行单元测试。

这里有一种方法(使用可选模型):

表决—在ViewModel(或控制器,如果使用MVC)中尽可能多地使用逻辑,并使用绑定根据控制器中的值设置按钮的状态。然后可以对控制器进行单元测试。
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;

}
  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)
    }

}