问题标签 [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 投票
3 回答
2438 浏览

unit-testing - NSubstitute 有多稳定?

我的公司正在寻求标准化隔离框架。我在看MS Stubs(因为 Moles 看起来很酷,我想我会把它放在同一个框架中)。然而,Stubs 还没有完全准备好迎接黄金时段(它在正常功能上仍然有点问题)。

所以现在我正在研究那里还有什么。我看过 Moq 和 Rhino 模拟。在此过程中,我遇到了Richard Banks 所做的精彩比较。在那他展示了NSubstitute。我真的很喜欢我在那里看到的。

但是,在被 MS Stubs 烧了一点之后,我不想押注于 alpha/非生产就绪的隔离框架。

那么,NSubstitute 准备好迎接黄金时段了吗?还是它仍然有点错误?

0 投票
1 回答
3534 浏览

.net - NSubstitute 是否支持 ref 参数?

我的 iterface 中有以下方法签名:

我做了这样的参数约束:

但由于裁判失败了。如果我把 ref 拿出来,它就可以正常工作。但我需要在这里通过引用。

任何想法如何得到这个?

旁注:如果传入的值为空,我的最终目标是在 SetItem 中引发异常。如果你能提供帮助,那么你会得到额外的积分!

0 投票
3 回答
1399 浏览

unit-testing - NSubstitute 是否支持 Partial Mocks 的想法?

NSubstitute 是否支持 Partial Mocks 的想法?

http://nsubstitute.github.com/

http://www.ayende.com/wiki/Rhino+Mocks+Partial+Mocks.ashx

0 投票
4 回答
9203 浏览

c# - NSubstitute - 测试特定的 linq 表达式

我在我目前正在开发的 MVC 3 应用程序中使用存储库模式。我的存储库界面如下所示:

在很多情况下,在我的服务类中编码方法时,我使用的是FindFirstandFind方法。如您所见,它们都将 linq 表达式作为输入。我想知道的是是否有一种方法 NSubstitute 允许您指定要在代码中测试的特定表达式。

因此,这里是一个服务方法的示例,它说明了我提到的存储库方法之一的使用:

那么,有没有一种方法,使用 NSubtitute,我可以测试特定的 lamda 表达式:i => !i.IsProcessed && i.IsConfirmed

任何指导将不胜感激。

0 投票
1 回答
835 浏览

c# - NSubstitute 'Do' 事件未触发

我在使用 NSubstitute 的推理类型进行编译时遇到问题。当我在.Do()语句中使用多个返回类型设置它,然后尝试使用计数器查看它被调用的次数时,计数器不会更新。

我正在嘲笑一个返回字符串的方法(它基本上是 的抽象File.ReadAllText()):

文档中提到的替代形式似乎确实可以工作:

我的计数器永远不会改变。

我正在关注http://nsubstitute.github.com/help/return-from-function/中的示例,所以我不明白我做错了什么 - API 是否已更改?

0 投票
1 回答
1898 浏览

.net - 如何模拟“输出”参数?

我已经下载了最新的 NSubstitute 版本,1.1.0,2011 年 5 月 21 日。在此版本之前,NSub 似乎不支持 out 参数。似乎已经完成了一些工作以通过中间版本提供支持:NSub Google Group

所以,我在尝试让所有部分都正常工作时遇到了一些麻烦。我正在使用SystemWrapper来模拟 DirectoryInfo

这是我的界面:

...和测试:

有没有办法从 INetworkPath 接口模拟 out 参数?

更新

尝试了以下方法:虽然它可以编译,但DirectoryInfo返回 null:

0 投票
1 回答
2725 浏览

c# - 当我不希望使用 NSubstitute 调用函数时

在设置我的模拟来调用函数时,我从 NSubstitute 得到了一种我没有预料到的行为。行为的简化版本是

测试通过但我得到输出:0 1

这表明对 mockedFoo.GenerateString("0"); 的调用 实际上导致调用 GetValue() 函数。

如果我对起订量做同样的事情:

然后我的测试也通过了,但我得到了结果:1

表示该函数未被调用。

这种行为是在某处描述的,还是我以错误的方式设置了一些东西?

0 投票
1 回答
361 浏览

asp.net - Response.Cache.VaryByHeader 上的 Nunit 测试

我正在使用 NUnit 和 NSubstitute 对使用 HttpResponse 的函数进行一些单元测试,我知道您无法模拟这些对象,因此我创建了接口来表示它们和其中的一些属性。

我无法理解如何为 Response.Cache.VaryByHeader 创建接口

这是我实际测试的功能:

我收到“无法将索引应用于 IHttpCacheVaryByHeaders 类型的表达式”错误。我有响应和缓存的接口,但是如何在接口中表示 VaryByHeaders,然后在具体类中使用它?

0 投票
1 回答
1590 浏览

c# - 在 When..Do for void 方法中预期时,Arg.Do() 未触发

我在我的测试中有以下结构,旨在测试是否使用正确的复杂参数对象调用某个日志,即使它引发异常,然后将其包装并通常进一步操作。logThing 有一个方法:

所以我使用 When..Do 让它抛出异常,

但是,此设置不会发生对 Arg.Do() 的预期调用。

我在 catch 块中放置了一个断点,并使用 Visual Studio 的即时窗口在 logThing 上调用 RecievedCalls<>(),它确实记录了一次使用正确参数调用 logThing 的记录——这就是 Arg.Do似乎只在 When..Do 块完成后执行。显然,这意味着由于我正在投入When..Do,它永远不会到达它。

我真的没想到 NSubstitute 会以这种方式订购电话,这是预期的行为吗?如果是这样,我可以做些什么来测试这样的传入参数,还是应该将我的参数检查放入主 When..Do 块中(这使得它更难阅读)?

被测系统对异常做了各种处理,包括将其与 logEntry 一起包装,因此在一个测试中进行所有这些检查对我很有用 - 我确实考虑过将它分成两个单独的测试,但意识到如果我这样做了,我将无法轻易确定错误包装输出的来源(它可能是最初生成 logEntry 的部分,也可能是包装它的部分)而我可以检查以确保使用此模式logThing 正在接收我所期望的。不过,如果有更好的方法可以做到这一点,我当然愿意接受建议。

0 投票
1 回答
4507 浏览

mocking - NSubstitute 仅拦截“setter”属性调用

使用 NSubstitute,有什么方法可以捕获您传递给属性设置器的值?

例如,如果我有以下界面:

说我有一个替代品,例如:

如果调用了替代品的任何“设置”方法,我有什么方法可以拦截并捕获该值?