Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#中使用NUnit和Moq对一个方法进行单元测试,该方法需要一个密封类型作为参数?_C#_Unit Testing_Workflow Foundation - Fatal编程技术网

如何在C#中使用NUnit和Moq对一个方法进行单元测试,该方法需要一个密封类型作为参数?

如何在C#中使用NUnit和Moq对一个方法进行单元测试,该方法需要一个密封类型作为参数?,c#,unit-testing,workflow-foundation,C#,Unit Testing,Workflow Foundation,我目前正在实现System.activities.Presentation.View.IExpressionEditorService以提供自定义表达式编辑器 问题是,我不知道如何正确测试接口声明的方法CreateExpressionEditor,因为前两个参数是我无法模拟的密封类型 存根也不是一个选项,因为这需要我用其他值正确地设置它们,这最终意味着我也可以创建工作流设计器的实例并尝试从中获取值。这闻起来像是我不该做的事 欢迎提供任何提示、窍门和指点 致以最诚挚的问候, 丹尼尔 接口声明如下

我目前正在实现System.activities.Presentation.View.IExpressionEditorService以提供自定义表达式编辑器

问题是,我不知道如何正确测试接口声明的方法CreateExpressionEditor,因为前两个参数是我无法模拟的密封类型

存根也不是一个选项,因为这需要我用其他值正确地设置它们,这最终意味着我也可以创建工作流设计器的实例并尝试从中获取值。这闻起来像是我不该做的事

欢迎提供任何提示、窍门和指点

致以最诚挚的问候,
丹尼尔


接口声明如下,我从官方存储库复制了它

//------------------------------------------------------------
// 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);
    }
}
//------------------------------------------------------------
//版权所有(c)微软公司。版权所有。
//------------------------------------------------------------
命名空间System.Activities.Presentation.View
{
使用制度;
使用System.Collections.Generic;
使用系统文本;
使用System.Windows.Controls;
使用System.Activities.Presentation.Model;
使用System.Activities.Presentation.Hosting;
使用System.Windows;
公共接口IExpressionEditorService
{
IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem程序集、ImportedNamespaceContextItem importedNamespaces、列表变量、字符串文本、类型expressionType);
IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem程序集、ImportedNamespaceContextItem importedNamespaces、列表变量、字符串文本、类型expressionType、大小initialSize);
IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem程序集、ImportedNamespaceContextItem importedNamespaces、列表变量、字符串文本);
IExpressionEditorInstance CreateExpressionEditor(AssemblyContextControlItem程序集、ImportedNamespaceContextItem importedNamespaces、列表变量、字符串文本、大小initialSize);
void CloseExpressionEditors();//关闭所有编辑器
void UpdateContext(AssemblyContextControlItem程序集,ImportedNamespaceContextItem importedNamespaces);
}
}

一个可能的解决方法可能是这样的,但它不能很好地与Moq集成。非常感谢@dymanoid。