使用最小起订量模拟静态类

2024-01-11

我正在 NUnit 的帮助下编写单元测试用例,并且有一些静态类需要模拟来运行测试用例,所以我们可以在以下帮助下模拟静态类吗MOQ模拟框架?

如果有人有想法,请提出建议。


有两种方法可以实现这一点 - 正如 PSGuy 所说,您可以创建一个代码可以依赖的接口,然后实现一个仅调用静态方法或任何其他日志记录实现(如 NLog)的具体对象。这是理想的选择。除此之外,如果您有大量调用需要测试的静态方法的代码,您可以重构要模拟的静态方法。

假设你的静态类看起来像这样:

public static class AppLog
{
    public static void LogSomething(...) { ... }
}

您可以引入一个公共静态属性,它是上述接口的实例。

public static class AppLog
{
    public static ILogger Logger = new Logger();

    public static void LogSomething(...)
    {
        Logger.LogSomething(...);
    }
}

现在可以测试依赖于此静态方法的任何代码。

public void Test()
{
    AppLog.Logger = Substitute.For<ILogger>(); // NSubstitute

    var logMock = new Mock<ILogger>();         // Moq
    AppLog.Logger = logMock.Object;            // Moq 

    SomeMethodToTest();

    AppLog.Logger.Recieved(1).LogSomething(...); // NSubstitute

    logMock.Verify(x => x.LogSomething(...));    // Moq
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用最小起订量模拟静态类 的相关文章

  • 如何调试参数化 SQL 查询

    我使用 C 连接到数据库 然后使用 Ad hoc SQL 来获取数据 这个简单的 SQL 查询非常方便调试 因为我可以记录 SQL 查询字符串 如果我使用参数化 SQL 查询命令 有没有办法记录 sql 查询字符串以进行调试 我想就是这样的
  • LINQ to XML - 如何正确使用 XDocument

    现在我首先要说的是 这确实是一项任务 然而 在我遇到 Linq to XML 语法之前 我几乎已经完成了它 我有 2 个课程 曲目和 CD 现在作为作业的一部分 我创建了一张 CD 然后向其中添加了一些曲目 在搜索了大量完美解释了如何从 x
  • 阅读 Stack Overflow RSS 源

    我正在尝试获取未回答问题的列表the feed https stackoverflow com feeds 但我在阅读时遇到困难 const string RECENT QUESTIONS https stackoverflow com f
  • C++ 在 Vector 中使用不可分配的对象

    我想将对象列表存储在std vector 但对象包含引用且无法分配给 但是 我可以复制构造该对象 我能想到的唯一选择是使用指针来包装对象并在需要分配指针时重新设置指针 但这样做的语法会显着降低可读性 特别是在使用迭代器时 我更喜欢另一种选择
  • 组合 Datepicker 和 Timepicker 值 Win 8.1

    我试图同时使用 Datepicker Timepicker 来返回可以存储在数据库中的 DateTime 例如 我想要安排会议的开始日期和结束日期 如果适用 我将如何将这些值组合成 SQL 数据库可以处理的正确格式 任何反馈都会很棒 我让这
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • 成员初始值设定项列表中的求值顺序是什么?

    我有一个带有一些参数的构造函数 我假设它们是按照列出的顺序初始化的 但在一种情况下 它们似乎是按相反的顺序初始化的 导致中止 当我反转参数时 程序停止中止 下面是我正在使用的语法的示例 a 之前需要初始化b 在这种情况下 你能保证这个初始化
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • C#:使用 System.Text 和 System.Text.RegularExpressions 之间的区别

    在 ASP NET C 应用程序中 我注意到为了使用 Regex 和 StringBuilder 我必须将两者都放在 using System Text using System Text RegularExpressions 从简单的角度
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 在可观察项目生成时对其进行处理

    我有一个IObservable它会生成一次性物品 并且在其生命周期内可能会生成无限数量的物品 因此 我想在每次生成新项目时处理最后一个项目 因此Using http reactivex io documentation operators
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 如何从枚举中选择随机值?

    给定 C 中的任意枚举 如何选择随机值 我没有找到这个非常基本的问题 我会在一分钟内发布我的答案作为任何人的参考 但请随意发布你自己的答案 Array values Enum GetValues typeof Bar Random rand
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • C# ToString("MM/dd/yy") 删除前导 0 [重复]

    这个问题在这里已经有答案了 可能的重复 格式化 NET DateTime Day 不带前导零 https stackoverflow com questions 988353 format net datetime day with no
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • 通过 Lotus Notes 使用 java Apache Commons Mail 发送电子邮件

    我在使用 java 程序中的 Lotus Notes 发送电子邮件时遇到了电子邮件配置问题 我知道这非常简单 但我想我错过了一些东西 我的代码如下 import java util logging Level import java uti
  • 对参数包中的每个元素应用函数

    我有以下专门化的模板函数 Pass the argument through template
  • 输入新功能时 rsp 不会移动[重复]

    这个问题在这里已经有答案了 当进入 C 函数时 我希望在反汇编中看到堆栈指针如何被减去足以为变量腾出空间 但没有 我只看到当esp仍然指向ebp时如何通过ebp直接访问变量的地址 push rbp mov rsp rbp movl 0x4
  • 如何使用 Nuget 控制台获取 jQuery 版本列表?

    我正在尝试找出解决方法来解决我遇到的问题 jQuery 2 0 是 Nuget 希望通过 GUI 更新到的版本 我可以将 Nuget 保留在 jQuery 1 9 x 1 x 路径上 而不是升级到 2 x 吗 https stackover
  • 如何在Unity3d软键盘中检测“完成”按钮

    I use a InputField in my android app to get a string a soft keyboard pops up when i m entering a string but now i want t
  • R Shiny:如何更改表格的背景颜色

    我找到了如何更改 Shiny 中用户界面的背景颜色 我发现的提款是它还为我显示的表格的背景着色tableOutput 这里我展示了一个虚拟示例 ui R 闪亮的UI 页面带侧边栏 headerPanel 虚拟 侧边栏面板 标签 hr 主面板
  • undefined 不是一个对象(评估 'RNGestureHandlerModule.State'

    我已经安装了反应导航 in my 反应本机项目 它是一个入门项目 没有任何代码 但是在运行项目时我遇到了这样的错误 这是我的导航代码 import createStackNavigator from react navigation imp
  • 在 C/C++ 中以 O(1) 时间初始化动态数组

    有没有办法在 O 1 时间内初始化整个动态数组 有没有类似的东西bool a 10 false 在静态数组的情况下 对于动态数组 要设置的每个元素都必须由CPU单独考虑 因此时间复杂度为O N 或者是吗 但这并不是 big oh 真正的工作
  • 尝试通过玩家输入使用 tkinter 使对象在网格中移动

    所以我正在 tkinter 而不是 pygame 中开发一个类似地下城爬行者的游戏 我发现这非常困难 因为网格无法在代码中工作 并且我找不到在画布上创建可通过按键输入移动的形状的方法 我已经尝试了多种修复方法 但无法找到一种方法将所有这些都
  • 与“docker run -d”等效的远程 api 命令是什么?

    我正在尝试通过远程 api 调用 docker 命令 Docker 远程 api 似乎没有 分离模式 选项 http docs docker io en latest commandline command run http docs do
  • LinQ 查询多个表并提取数据

    我正在对 4 个表进行内连接查询 我必须提取数据并转换为字符串并将其放入数组中 var query from a in context as join b in context bs on a prikey equals b forkey
  • 如何连接数组列表中的字符串值

    我需要使用 concat 一次打印所有数组列表值 这是我的代码 ArrayList
  • git merge 不创建合并提交,没有 MERGE_HEAD [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 在 Linux 上使用 Git 1 8 1 2 我一直在基于以下两个不同的分支上工作master并行 称为 A 和 B 并且还创建
  • 是什么导致 pyspark 中的“unicode”对象没有属性“toordinal”?

    我收到此错误 但我不知道是什么原因造成的 我的 python 代码在 pyspark 中运行 堆栈跟踪很长 我只显示其中的一些 所有堆栈跟踪都没有显示我的代码 所以我不知道在哪里寻找 导致此错误的可能原因是什么 usr hdp 2 4 2
  • 什么是 GWT 字节缓存文件?

    作为背景 今天我的 GWT 托管模式运行速度神秘地减慢到几乎无法工作的程度 每当我暂停应用程序时 相关线程 主线程 代码服务器等 都会等待某些文件 I O 本机方法 挠头一阵子后 我尝试清理一下我的硬盘 然后我刚刚在我的用户中发现Temp文
  • 在 Mac OS 上安装 Rails 失败并出现多个错误

    我尝试在 Mac OS v10 10 4 系统上安装 Rails 但运行时失败brew install rbenv ruby build 错误是 Error Permission denied usr local etc openssl W
  • PRNG 需要线程安全吗?

    只要并发调用不会导致 seg v 或返回相同的值 就有什么理由可以防止竞争条件和数据损坏PRNGs http en wikipedia org wiki Pseudorandom number generator当这些错误的主要影响是不可预
  • 如何在不删除约束的情况下从表中删除

    我有一个问题 我需要在不删除或暂停约束的情况下删除信息 问题是否允许放弃约束很简单 但是我可以将值从 NULL 更改为 NOT NULL DELETE FROM SUPPLIER WHERE COUNTRY USA 然而 另一个表 PROD
  • 方向改变时片段 Backstack 不会恢复

    我有一个FragmentActivity 当用户浏览应用程序时 我将当前片段替换为用户选择的片段 并将事务添加到后台堆栈 一切正常 用户可以通过按后退按钮返回到之前的片段 当设备方向改变时就会出现问题 假设用户看到的第一个片段是 A 然后他
  • 使用最小起订量模拟静态类

    我正在 NUnit 的帮助下编写单元测试用例 并且有一些静态类需要模拟来运行测试用例 所以我们可以在以下帮助下模拟静态类吗MOQ模拟框架 如果有人有想法 请提出建议 有两种方法可以实现这一点 正如 PSGuy 所说 您可以创建一个代码可以依