Я уже некоторое время пишу модульные тесты с использованием NUnit и Moq с моим кодом Silverlight. Одна проблема, с которой я продолжаю сталкиваться, связана с DependencyObjects.
Если что-то получено из DependencyObject, я не могу создать его экземпляр в своем тесте. Например, MouseEventArgs является производным от DependencyObject. Если у меня есть код, который принимает эти аргументы, я не могу создать эти аргументы по нескольким причинам ... одна из них заключается в том, что это DependencyObject.
Насколько я понимаю, базовый конструктор DependencyObject пытается работать с некоторыми статическими данными, которые не существуют, пока вся система Silverlight не запущена и работает. Любая конструкция класса, производная от DependencyObject, генерирует исключение. Облом.
Я не использую Silverlight Unit Test Framework , потому что он действительно не является модульным тестированием и требует пользовательского интерфейса. Мне нужны настоящие, безголовые юнит-тесты.
В любом случае, лучшее, что я придумал, - это обернуть эти объекты и дать им интерфейсы, такие как ITimelineMarker
, и я даю им методы расширения для этого: timelineMarker.ToInterface()
. Это хорошо работает, и я могу издеваться над ними ... но мне было интересно:
Кто-нибудь придумал лучший способ иметь дело с объектами DepencencyOb в модульных тестах Silverlight?