Как я могу провести модульное тестирование чего-то, что использует VisualTreeHelper?

У меня есть статическая вспомогательная функция:

    public static DependencyObject GetParentObject(DependencyObject child)
    {
        if (child == null) return null;
        ContentElement contentElement = child as ContentElement;

        if (contentElement != null)
        {
            var parent = ContentOperations.GetParent(contentElement);
            if (parent != null) return parent;

            var fce = contentElement as FrameworkContentElement;
            return fce != null ? fce.Parent : null;
        }

        //if it's not a ContentElement, rely on VisualTreeHelper
        return VisualTreeHelper.GetParent(child);
    }

Она работает в реальном приложении, но я пытаюсь написать для нее несколько модульных тестов. Вот моя первая попытка:

    [Test]
    public void GetParentObject_returns_immediate_parent()
    {
        var contentControl = new ContentControl();
        var textBox = new TextBox();

        contentControl.BeginInit();
        contentControl.Content = textBox;
        contentControl.EndInit();

        var result = UIHelper.GetParentObject(textBox);
        Assert.AreSame(contentControl, result);
    }

К сожалению, это не удается, потому что VisualTreeHelper возвращает null. Как я могу смоделировать визуальное дерево, которое будет работать?

8
задан Scott Whitlock 23 November 2010 в 11:14
поделиться