c# - 如何使用 NUnit 和 Moq 在 C# 中对需要密封类型作为参数的方法进行单元测试?
问题描述
我目前正在实施System.Activties.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);
}
}
解决方案
推荐阅读
- crystal-reports - 多行字符串,设置在一行
- angular - 将“dotnet new angular”创建的应用部署到 Azure 失败
- postgresql - 从 PostgreSQL 中的 JSONB 列中提取数组数据并使用 pgx 库将其编组为字符串切片
- keras - 使用 LSTM 神经网络预测天然气价格
- javascript - Payload Too Large - 当尝试上传大于 10MB 的文件时,在 dropzone.js 的控制台中显示
- reactjs - 创建帖子传奇后重定向到创建的帖子
- docker - 使用 Nginx 反向代理的 Rancher
- c# - 实体框架:多个数据库版本
- python - 在 PyAutoGUI 故障安全时运行
- symfony - vich 上传器图像将作为临时文件发送到 xampp