WPF MVVM и поблочное тестирование

Весь сценарий не очень понятен из предоставленного вами кода, я думаю, что вы должны удалить атрибуты 'source' => 'non-db', из этих полей, чтобы они были сохранены в базы данных.

Не забудьте выполнить восстановление и выполнить запросы, сгенерированные в результате восстановления, чтобы Sugar создал соответствующие поля в таблице возможностей для сохранения данных загруженного вами файла.

6
задан Dave Clemmer 28 July 2011 в 21:40
поделиться

4 ответа

Согласно шаблону MVVM:

  • Представление знает о ViewModel - это будет иметь ссылку на него или как конкретный экземпляр или как интерфейс
  • ViewModel не должен знать о представлении вообще.

Если необходимо обработать события, то существует два способа, которыми я знаю о сделать это:

1: Выставьте команду в своем viewmodel и привязку данных использования для инициирования его. Это - мой предпочтительный путь, например:

class MyViewModel
{
    public ICommand ClickCommand { get; set; }
}

<Button Command="{Binding Path=ClickCommand}" />

Если Вы делаете это затем, можно протестировать команду путем простого вызова myViewModel.ClickCommand.Execute вручную.

2: Выставьте функцию в viewmodel и запишите абсолютный минимум в .xaml.cs файл, чтобы обработать событие и вызвать функцию, например:

class MyViewModel
{
    public void HandleClick(){ }
}

<Button Click="MyClickHandler">

//.xaml.cs file
public void MyClickHandler( Object sender, EventArgs e ) {
    m_viewModel.HandleClick()
}

Если Вы делаете это, то можно протестировать путем простого вызова myViewModel.HandleClick вручную. Вы не должны должны быть беспокоиться поблочным тестированием MyClickHandler кодируйте, поскольку это - только 1 строка!

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

Это кажется, что у Вас есть обработчик событий для события отбрасывания непосредственно в Вашем классе ViewModel. Имело бы больше смысла иметь обработчик в Вашем уровне UI, который в свою очередь вызовет функцию в Вашем ViewModel? Таким образом, Ваш модульный тест мог просто вызвать функцию (моделирующий операцию перетаскивания, что касается ViewModel).

Плюс, это лучше разделило бы Ваш ViewModel от Вашего кода UI.

1
ответ дан 8 December 2019 в 13:02
поделиться

Не сгенерируйте событие, просто назовите обработчики (что означает, что они должны быть общедоступными, и вероятно взять меньше обработчика событий центральные аргументы). Выезд, как это сделано в Мече (http://www.codeplex.com/caliburn) с помощью "Действий".

0
ответ дан 8 December 2019 в 13:02
поделиться

Почему бы вам не использовать фиктивный фреймворк, например Moq ? Ознакомьтесь с их быстрым запуском, там есть образец издевательства над событиями. URL-адрес: http://code.google.com/p/moq/wiki/QuickStart

0
ответ дан 8 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

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