Хобрук: Ваш путь к мастерству в программировании

Модульное тестирование Silverlight — как проверить базовые типы пользовательского интерфейса?

Вкратце: как мне проверить тип пользовательского элемента управления пользовательского интерфейса во время модульного теста Silverlight?

Подробно: я загружаю дочерние представления в ContentControl родительского представления. Во время тестирования я хочу проверить, что правильное представление было загружено в нужное время. Мои представления находятся в отдельных проектах, и я не хочу добавлять ссылку на эти сборки в свой тестовый проект для родительского представления (слишком тесно связанного).

Вот где я застрял:

[TestMethod]
[Asynchronous]
[Description("Test to confirm that upon initial class creation, the login view is loaded as the default content for the TaskRegion.")]
public void Shell_Initialisation_LoginViewIsLoadedByDefault()
{
   Shell shell = new Shell();

   //helper method from Justin Angels example 
   WaitFor(shell, "Loaded");

   TestPanel.Children.Add(shell);

   Shell_ViewModel viewModel = shell.DataContext as Shell_ViewModel;

   EnqueueCallback(() => Assert.IsTrue(viewModel.TaskRegionContent is **How do I reference my control type**));

   EnqueueTestComplete();
}

Должен ли я использовать насмешку?

(WaitFor — это вспомогательный метод, предоставляемый Джастин Энджел)


Ответы:


1

Как насчет использования GetType()? Затем вы можете использовать различные методы для экземпляра Type, чтобы проверить, является ли он экземпляром типа или унаследован от типа.

Assert.IsInstanceOfType(viewModel.TaskRegionContent, typeof(Control))

Где «Контроль» выше — это тип интереса, который вы хотите проверить.

См. также: http://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting.assert.isinstanceoftype(VS.80).aspx

06.08.2009
Новые материалы

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

Обзор 20 основных и современных методов работы с массивами в JavaScript
Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

Да, но я чувствую необходимость указать, что это или не единственные два.
Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.