问题标签 [moq-3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
21017 浏览

c# - 使用 Moq 验证参考参数的值

我刚刚切换到起订量并遇到了问题。我正在测试一种方法,该方法创建业务对象的新实例,根据用户输入值设置对象的属性并调用方法 (SaveCustomerContact) 来保存新对象。业务对象作为 ref 参数传递,因为它通过远程处理层。我需要测试传递给 SaveCustomerContact 的对象是否按预期设置了所有属性,但是因为它在控制器方法中被实例化为新对象,所以我似乎无法这样做。

这是测试:

这只是获得该参数的许多尝试中的最新一次。作为参考,actual 的值不会从其初始(构造)状态改变。

在目标调用失败后移动 Assert.AreEqual(expected, actual)。如果我将 .Verifiable() 而不是 .CallBack 添加到设置中,然后在目标之后调用 remote.Verify (或者,我假设,将模拟设置为严格)它总是失败,因为我在测试中提供的参数不是与在控制器方法中创建的实例相同。

我正在使用起订量 3.0.308.2。任何关于如何测试它的想法将不胜感激。谢谢!

0 投票
1 回答
3856 浏览

moq - 对 Mock.Setup 的后续调用导致相同的对象实例

我正在设置一个模拟,如下所示。它被传递到目标的构造函数中。目标有一个 Decrypt 方法,该方法在目标的生命周期内被调用两次。每次调用 Decrypt 方法时,它都会处理安装程序中“新”的证书。但是,当第二次调用 Decrypt 对象时,我在尝试解密时得到了一个 ObjectDisposed 方法。如果我用调用 GetCertificate() 的 ICertificateHelperAdapter 的假实现替换此 Mock,则对 Decrypt 的第二次调用将正常工作。

我推断当我使用 Mock 时,它不会在后续调用 GetCertificate 时返回对象的新实例。这是设计使然吗?

0 投票
2 回答
429 浏览

unit-testing - 起订量:我可以在模拟的成员/属性行为和未模拟的成员/属性行为之间交换吗?

我想使用我在测试类中使用的模拟库的一个实例,但是,对于某些测试,我可能想模拟其中一个成员函数来执行/返回模拟行为/返回值;对于其他测试,我可能想要库的未模拟(本机)功能。有没有办法在一个实例中的设置(模拟行为)和另一个实例中的“UNSetup”(非模拟行为)之间进行交换?

0 投票
1 回答
15820 浏览

c# - 如何使用 Moq 模拟 ILogger / ILoggerService

我正在为我的 View Model 类编写一些单元测试。此类的构造函数注入了 ILoggerService。该接口定义了 1 个返回 ILogger 的方法 GetLog。如下所示,表示一个实现 ILoggable 的类:-

我正在尝试对我的 CreateNewOrder 方法进行单元测试,如下所示:

我将如何模拟 ILoggerService 以便返回有效的 Logger?目前我的单元测试抛出了 NullReferenceException。

我正在使用 Moq 来模拟。

我在想象我需要做一些事情

但是如果不让我的测试类实现 ILoggable,我看不到如何。

提前致谢。

0 投票
1 回答
725 浏览

c# - 在 Moq C# 中模拟运算符的行为

希望你好。

我正在使用 C# 中的 Moq 创建一些测试。我正在模拟的对象之一已覆盖 ==、> 和 < 运算符。

有谁知道它是否可能,如果可能,如何...配置一个 Mock 对象来复制它。我问的原因是我试图注入一个模拟存根作为我得到的一些遗留代码,这些代码具有深层和肮脏的依赖关系。

感谢您的时间

谢谢

0 投票
2 回答
1164 浏览

.net - 在这种情况下我可以使用起订量吗?

我有什么可能的解决方法来使用 Moq 模拟这个对象。返回的错误消息是:“非虚拟(在 VB 中可覆盖)成员上的设置无效:p => p.Certificate.SubjectName.Name”

注意:我正在尝试模拟X509SecurityToken。这是正在测试的类:

公共类 X509IssuerNameRegistry : IssuerNameRegistry { 只读列表 _trustedSubjectNames = new List();

}

任何工作轮次(使用起订量)还是我应该寻找另一个模拟框架来完成这个?

0 投票
1 回答
294 浏览

c# - 如何从验证中排除方法调用?

我正在使用 Moq 并在 TestInitialize 方法中设置一些期望,如下所示:

我不在乎这些是否被调用,所以我不希望VerifyAll()为这些抛出异常。

我需要输入的字母的神奇组合是什么?

0 投票
1 回答
1134 浏览

c# - 通过 Moq 设置匹配参考类型参数

我遇到了与此处此处提出的问题类似的问题,但解决方案似乎不适用于我的情况。

考虑以下类:

以下代码用于测试(calls列表仅用于调试):

上述测试失败,但有以下异常:

我确定 ProductsWebService.GetClassLevel 被调用而getClassLevelLang.Equals没有被调用(用调试器检查)。更奇怪的是,我calls在调用VerifyAll()list 之前检查了它的实际值,它是空的。

0 投票
1 回答
18347 浏览

unit-testing - 使用 Moq Verify() 方法调用计数时,失败测试的错误消息包含使用 Moq 的实际方法调用计数

考虑以下情况,我正在测试注入的依赖项的方法是否被调用了特定次数:

当我强制测试失败时,输出是:

Moq.MockException:未在模拟上执行 1 次调用:e => e.Blink()

更好的是:

Moq.MockException:调用意外执行了 2 次,而不是 1 次:e => e.Blink()

以下是与测试有关的项目:

是否可以在失败测试的错误消息中收集并显示调用依赖项方法的实际次数?

我不确定这是否重要,但我使用的是 Moq v3.1.416.3(不是最新的,我知道,但我使用的另一个库尚未更新到 Moq 4.x……)

0 投票
2 回答
6106 浏览

c# - “任何”对象上的 MOQ 存根属性值

我正在编写一些代码,这些代码遵循将方法的所有参数封装为“请求”对象并返回“响应”对象的模式。但是,这在使用 MOQ 进行模拟时产生了一些问题。例如:

...在我的测试中,我想存根查询以在给出密钥时返回客户

我想要的最小起订量是可能的吗?