Тестирование логического модуля пользовательского интерфейса - PullRequest
1 голос
/ 14 декабря 2010

У меня есть десятки условий, чтобы проверить, что установить логические значения для свойства семи или восьми кнопок пользовательского интерфейса.

Поэтому я устанавливаю логические переменные для каждой из кнопок (например, isAction1Allowed, isAction2Allowed и т. Д.

Как мне написать модульный тест для этого случая?

В настоящее время у меня есть один метод, который содержит всю логику, которая хороша, но не уверен, как превратить в модульный тест (имейте в виду, оченьновичок в 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;

}

Придется ли мне разбивать метод? Есть ли лучший способ сделать то, что я пытаюсь сделать? Помните, что есть гораздо больше условий и кнопок, чемпример показывает, но это суть. По сути, это небольшой рабочий процесс или конечный автомат.

Спасибо, стержень.

Ответы [ 2 ]

3 голосов
/ 14 декабря 2010

Обычно вы должны использовать модели представлений, которые являются классами, специально адаптированными к вашим представлениям.Эти классы могут содержать такие свойства пользовательского интерфейса.Контроллер должен заполнить их из классов модели домена, чтобы вы могли протестировать их, как и любой другой класс.

Лично я использую AutoMapper для преобразования между моими классами модели домена и моими моделями представлений, поэтому я тестирую свои классы сопоставления, которые отвечают за это преобразование.

0 голосов
/ 14 декабря 2010

Вот один способ (используйте дополнительную модель):

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...