问题标签 [nsubstitute]

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 投票
1 回答
4688 浏览

unit-testing - NSubstitute 以对象作为 Received 调用中的参数

我正在使用 NSubstitute 进行单元测试。我需要检查一个对象是否被发送到我正在测试的方法中的一个 void 方法。我只需要检查发送的对象是否具有特定值的属性之一。

例如。

两种简单的方法

我正在编写测试的方法。

如果人名以 A 开头,我需要使用 NSubstitute 检查是否使用以 A 开头的名称调用了“NameStartsWithA”。

到目前为止,我的单元测试看起来像这样

但是 Nsubstitute 说该函数从未被调用,但是当我使用“RecievedArgumentsAny()”进行相同的测试时,它通过了。

希望这个例子能帮助你理解我想要完成的事情。

0 投票
2 回答
1189 浏览

vb.net - 将 NSubstitute 与 vb.net 模块一起使用

我们有一些现有的静态方法,它们分组在 VB 模块中。

我想向公司介绍单元测试,并且正在研究使用 NUnit 和 NSubstitute。

我似乎无法为我想要测试的 VB 模块创建一个替代品,或者找到任何如何做到这一点的示例。我正在尝试做类似的事情:

但 VB 告诉我“MyModule 是一种类型,不能用作表达式”。

如果我尝试

VB 告诉我'Module 'MyModule' 不能用作类型'。

我的语法错误还是我想做一些愚蠢的事情?

0 投票
3 回答
1668 浏览

unit-testing - NSubstitute VerifyAll 等效

NSubstitute 是否有相当于 MOQ 的VerifyAll调用?我想验证我希望在所有替代品中收到的所有调用实际上都被调用了,理想情况下是在一个TearDown方法中。我目前正在测试中单独验证每个收到的呼叫,这并不理想。对于初学者来说,任何在替代上设置但实际上并没有被调用的调用如果没有被单独明确地验证,就会漏网。

0 投票
1 回答
4658 浏览

c# - 通过 NSubstitute 中的回调验证调用参数

我在 NSubstitute 中有一个失败的测试,因为传递给替换调用的参数不匹配。以下是正在测试的相关代码:

问题出现在ExpectedUserPermissions.AuthorisedPageIds属性中,如下所示:

如您所见,有一个 LINQ Select,它PageIdApplicationPagePermissions集合中提取属性并将其作为IEnumerable<string>. 因为该属性中的投影创建了一个新对象,所以替换不匹配,因为它认为这 2 个对象是不同的。

我可以在传入的参数上创建一个回调,GetMenuData以便我可以检查它的值吗?

NSubstitute 回调的文档只讨论了检查调用的返回值,而不是传递给调用的参数。

0 投票
1 回答
3961 浏览

c# - 无法确定要使用的参数规范

我在使用 NSubstitute 时遇到问题。我有这个短代码:

ReportingCycleDeliveryRepository.Add()因此,当使用任何 ReportingCycleDelivery 参数调用我的 (void) 方法时,它应该将此项目添加到我的RepCycleDeliveries列表中。

但相反,它会引发异常:

NSubstitute.Exceptions.AmbiguousArgumentsException

“无法确定要使用的参数规范。请对同一类型的所有参数使用规范。”

这是为什么?为什么 NSubstitute 不能确定要使用的正确参数规范?我清楚地提供了一个提示,即论点可以是任何ReportingCycleDelivery项目。

0 投票
1 回答
120 浏览

resharper - Resharper 将 NSubstitute 方法显示为错误

我们已经使用 VS2012 升级到 Resharper 7.1。然而,Resharper 似乎将 NSubstitute 方法显示为红色,如下图所示,使用 Arg.Any<>:

在此处输入图像描述

有谁知道如何解决这个问题?注意:代码编译成功,只是 resharper 的显示就是问题所在。

干杯,比利

0 投票
2 回答
3122 浏览

c# - C# 单元测试 - 模拟、存根或使用显式实现

这个之前已经讨论过很多次了,但是下面例子中的优点并不明显,所以请多多包涵。

我正在尝试决定是否在我的单元测试中使用模拟实现,并且鉴于以下两个示例,我尚未决定,第一个使用 NSubstitute 进行模拟,第二个使用 SimpleInjector(Bootstrapper 对象)解析的实现。

本质上,两者都在测试同一件事,即在调用 .Dispose() 方法时将 Disposed 成员设置为 true(请参阅本文底部的方法实现)。

在我看来,第二种方法对回归测试更有意义,因为模拟代理在第一个示例中将 Disposed 成员显式设置为 true,而在注入实现中它是由实际的 .Dispose() 方法设置的。

您为什么建议我选择一个而不是另一个来验证该方法是否按预期运行?即调用了 .Dispose() 方法,并且该方法正确设置了 Disposed 成员。

作为参考, .Dispose() 方法就是这样:

干杯

0 投票
2 回答
2681 浏览

unit-testing - 在单元测试中验证函数调用顺序

我想要一个单元测试来验证 2 个函数调用以正确的顺序发生。在示例中,第一个函数加密文件并将其保存到文件系统,第二个函数将加密文件发送到第 3 方处理器(通过 FTP)。

我使用 NSubstitute 作为模拟框架和 FluentAssertions 来帮助进行测试验证。使用 NSubstitute 开箱即用似乎无法实现这一点。

0 投票
1 回答
11714 浏览

c# - 返回返回另一个替换的方法的结果会在 NSubstitute 中引发异常

我在使用 NSubstitute 几次时遇到了一个奇怪的问题,虽然我知道如何解决它,但我一直无法解释它。

我精心设计了似乎是证明问题所需的最低限度的测试,它似乎与使用一种方法来创建替代返回值有关。

当我运行上述测试时,出现以下异常:

但是,如果我更改测试方法以返回:

或这个:

有用。

我只是想知道是否有人可以解释为什么会发生这种情况?

0 投票
7 回答
11518 浏览

c# - 如何围绕私有方法编写单元测试

我正在尝试对具有公共和私有方法的类进行单元测试,并且我想对已设置为私有的特定方法(基础上的受保护抽象)进行单元测试。我无法公开该方法,也不想通过整个过程来测试该方法,我只关心该方法的输入参数和返回是否符合预期。

我不想公开该方法,因为这个问题突出显示:

将私有方法公开以对其进行单元测试...好主意吗?

我的问题是,测试私有方法的各种方法是什么,我应该支持哪种技术,为什么?

我已阅读此问题(您如何对私有方法进行单元测试?)但想知道接受的答案是否仍然是最佳答案,或者多年后有更好的方法。

如果这个问题被认为是如何对私有方法进行单元测试?我将在那里添加我的评论并要求更新,请告知。