Метод поблочного тестирования, который использует средства управления UI

Следующий код не дает вам полного правильного результата, но вы должны лучше понять, как это сделать. Ссылка на .reduce (): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

var oldArr=[
    {
      "id":"5c407834953d7f420d56f866",
      "allocated_to":"FIELD",
      "zone":"NORTH",
      "state":"DELHI",
      "location":"NEW DELHI",
      "customer_name":"REET INFOTECH"
    },
    {
      "id":"5c407834953d7f420d56f867",
      "allocated_to":"FIELD",
      "zone":"NORTH",
      "state":"JK",
      "location":"Sree Nagar",
      "customer_name":"REET"
    },
    {
      "id":"5c407834953d7f420d56f868",
      "allocated_to":"FIELD",
      "zone":"EAST",
      "state":"Odisha",
      "location":"Bhubaneswar",
      "customer_name":"REET"
    }
]

let result = oldArr.reduce(
    function(acc, curr){
        var sameZone =  acc.find(function (accData){ return accData.zone===curr.zone})
        if(sameZone){
            sameZone.state_list.push({
                state: curr.state,
                    task_list: [{
                        user_pkId: curr.id,
                        loan_accounts_assigned: [{
                            customer_name: curr.customer_name
                        }]
                    }]
            })
        }else{
            acc.push({
                zone: curr.zone,
                state_list: [{
                    state: curr.state,
                    task_list: [{
                        user_pkId: curr.id,
                        loan_accounts_assigned: [{
                            customer_name: curr.customer_name
                        }]
                    }]
                }]           
            })          
        }        
        return acc;
    }, []);
console.log(result);

6
задан Nathan W 20 November 2008 в 00:19
поделиться

3 ответа

При попытке к модульному тесту прикладной логики путем моделирования взаимодействия со средствами управления UI необходимо сделать некоторую абстракцию с помощью шаблона MVC. Затем Вы можете просто иметь тупиковое представление и назвать методы контроллера от Ваших модульных тестов.

Если это - фактические средства управления, Вы пробуете к модульному тесту, у Вас есть я.

6
ответ дан 8 December 2019 в 17:29
поделиться

То, что Вы предлагаете, даже не скомпилирует, если Ваш код будет полагаться на Систему. Windows. Формы. Управление. Ваша версия Управления и Текстового поля является просто неправильным типом.

Если бы, вместо этого, Вы разделили свой UI и Логику с интерфейсами, то Вы могли сделать это... Что-то вроде этого:

public interface ITextBox
{
    public string Text {get; set;}
}

public class TextBoxAdapter : ITextBox
{
    private readonly System.Windows.Forms.TextBox _textBox;
    public TextBoxAdapter(System.Windows.Forms.TextBox textBox)
    {
        _textBox = textBox;
    }

    public string Text
    {
        get { return _textBox.Text; }
        set { _textBox.Text = value; }
    }
}

public class YourClass
{
    private ITextBox _textBox;
    public YourClass(ITextBox textBox)
    {
        _textBox = textBox;
    }

    public void DoSomething()
    {
        _textBox.Text = "twiddleMe";
    }
}

Затем в Вашем тесте все, что необходимо сделать, создают насмешку, поддельный или тупиковый ITextBox и передают его в.

Когда я делаю что-то вроде этого, я создаю интерфейс в немного более высоком уровне... Я создаю интерфейс, который много походит на весь UI, и имейте реализацию UI интерфейс. Затем я могу вертеть UI все, в чем я нуждаюсь, действительно никогда не зная, что это - управление Формами.

Между прочим, если Вы хотите пойти с подходом создания фактических средств управления, рассмотрите это сообщение в блоге об этом: http://www.houseofbilz.com/archive/2008/10/12/winforms-automation-extensions.aspx

3
ответ дан 8 December 2019 в 17:29
поделиться

Существует несколько шаблонов, которые полезны для разделения презентации UI от логики UI включая Образцовый Контроллер Представления, и различные воплощения Образцового Предъявителя Представления (иначе Унижают Диалоговое окно). Скромное Диалоговое окно было придумано конкретно для создания поблочного тестирования легче. У Вас должен определенно быть один из этих шаблонов UI в Вашем арсенале дизайна.

Но я нашел, что для простых форм, когда поддержка платформы это, это довольно просто для тестирования непосредственно против реальных средств управления UI. Я создал довольно устойчивый UIs, полностью тестируют сначала в Java Swing и Windows. Формы. Я не мог управлять им в SWT или ASP.NET и вернулся MVP.

Для тестирования вещей как это...

[Test] public void ShouldCopyFromAvailableToSelectedWhenAddButtonIsCLicked(){
  myForm.AvailableList.Items.Add("red");
  myForm.AvailableList.Items.Add("yellow");
  myForm.AvailableList.Items.Add("blue");

  myForm.AvailableList.SelectedIndex = 1;
  myForm.AddButton.Click();

  Assert.That(myForm.AvaiableList.Items.Count, Is.EqualTo(2));
  Assert.That(myForm.SelectedList.Items[0], Is.EqualTo("yellow"));
}

... работа непосредственно против средств управления UI хорошо работает. Но если бы Вы хотите начать тестировать перемещения мыши, нажатия клавиш или перетаскивание, Вы были бы более обеспеченным выбором более устойчивого шаблона UI как тот, предложенный Brian.

5
ответ дан 8 December 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: