Как выполнить модульное тестирование метода в C# с использованием NUnit и Moq, который ожидает закрытый тип в качестве параметра? - PullRequest
2 голосов
/ 09 марта 2020

В настоящее время я реализую System.Activties.Presentation.View.IExpressionEditorService , чтобы предоставить редактор пользовательских выражений.

Проблема в том, что я не знаю, как правильно тестировать метод CreateExpressionEditor , который объявлен интерфейсом, так как первые два параметра являются запечатанными типами, которые я не могу смутить.

Стабилизация также не вариант, так как это потребует от меня правильно настроить их с другими значениями, что в итоге означает, что я также мог бы просто создать экземпляр конструктора рабочего процесса и попытаться получить значения оттуда. Это пахнет чем-то, чего я не должен делать.

Любые подсказки, уловки, указатели очень приветствуются.

С наилучшими пожеланиями,
Даниэль


Интерфейс объявлен следующим образом, я скопировал его из официального справочного источника Microsoft хранилище.

//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------

namespace System.Activities.Presentation.View
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Controls;
    using System.Activities.Presentation.Model;
    using System.Activities.Presentation.Hosting;
    using System.Windows;

    public interface IExpressionEditorService
    {
        IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem assemblies, ImportedNamespaceContextItem importedNamespaces, List<ModelItem> variables, string text, Type expressionType);
        IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem assemblies, ImportedNamespaceContextItem importedNamespaces, List<ModelItem> variables, string text, Type expressionType, Size initialSize);
        IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem assemblies, ImportedNamespaceContextItem importedNamespaces, List<ModelItem> variables, string text);
        IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem assemblies, ImportedNamespaceContextItem importedNamespaces, List<ModelItem> variables, string text, Size initialSize);
        void CloseExpressionEditors(); // Closes all editors
        void UpdateContext(AssemblyContextControlItem assemblies, ImportedNamespaceContextItem importedNamespaces);
    }
}
...