问题标签 [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 回答
1491 浏览

unit-testing - Asp.net MVC Test of Create action method with NUnit and Nsubstitute always fails

I have this controller:

I have this test for NUnit:

This is the Model:

public class Company {

}

When I Run the test, this function always return false: var result = _commandBus.Submit(command); and the test fails.

I don't know how to test it? Should I mock the _commandBus and set it to return true? I tried in this way but unsuccessfully:

To create this project I have got inspiration from this http://efmvc.codeplex.com/

Any advise to me? Thanks.

0 投票
1 回答
498 浏览

c# - 在设计时代码中使用模拟框架的缺点

我正在为我的公司制作 Prism 模板。我想让设计时数据尽可能简单。

为此,我正在制作一个从我的 ViewModel 继承的设计类。DesignViewModel 将调用我的 ViewModel 的构造函数。

我的 ViewModel 构造函数有时会调用 prism 方法和属性,例如IRegionManager.Regions. 我正在考虑为将使用 NSubstitute 的接口制作一个存根。像这样:

我打算为IUnityContainer.

除了单元测试,我从来没有在任何东西中使用过 Mocking 框架。像这样使用它是一个坏主意吗?

虽然它永远不会在生产代码中被调用,但它会为我的实际应用程序添加对 NSubstitute 的依赖。

这有缺点吗?

0 投票
2 回答
2216 浏览

c# - 模拟 Excel.worksheet 时如何避免使用动态?

我正在尝试使用 NSubstitute 或其他模拟框架和 MSTest (Visual Studio 2010) 模拟 Excel 电子表格。我不确定是否有比这更好的方法——这对测试不太有效:

这是一个例子(这是现在所有的原型代码,不是很干净):

到目前为止,一切顺利:如果 GetSetting 方法与我的测试在同一个项目中,则通过。但是,当 GetSetting 在我的 VSTO Excel-Addin 项目中时,它会在 GetSetting 函数的第一行出现以下错误:

作为参考,GetSetting 从工作表中的 columnA 中获取一个值,并返回 columnB 中的值。

最后一个有趣的部分是如果我重新定义我的方法的签名如下:
public static string GetSetting( dynamic sheet, string settingName)
它在 VSTO 项目中工作。

那么发生了什么,做这样的事情的最好方法是什么?

谢谢!

0 投票
1 回答
629 浏览

mocking - 生成的服务模拟:除了 RhinoMocks 之外的一切都失败了?

请参阅此代码:

请注意,这DoSomething是从 NO 接口继承的自动生成类中的非虚拟方法调用。因此,根据常识,它不应该起作用。但确实如此。

问题是它是唯一可以做到这一点的(非商业)框架:

  • Rhino.Mocks 有效,验证也有效
  • FakeItEasy 说它没有找到默认构造函数(可能只是错误的异常消息):No default constructor was found on the type SomeNamespace.TicketStoreService
  • 起订量给出了一些理智和可以理解的东西:Invalid setup on a non-virtual (overridable in VB) member: service=> service.DoSomething
  • Nsubstitute 给消息System.NotSupportedException: Cannot serialize member System.ComponentModel.Component.Site of type System.ComponentModel.ISite because it is an interface.

我真的很想知道框架在这里发生了什么,除了起订量。“花哨的新”框架似乎也有一个初步的性能命中,可能准备了一些类型缓存和序列化的东西,而 RhinoMocks 不知何故设法创建了一个非常“苗条”的模拟而没有递归。我不得不承认我不太喜欢 RhinoMocks,但它在这里闪耀……不幸的是。

那么,有没有办法让它与更新的(非商业的!)模拟框架一起工作,或者以某种方式从 Rhino.Mocks 中得到一个理智的错误消息(描述我实际使用的 6 个参数中的哪一个是不同的) ? 为什么 Rhino.Mocks 能做到这一点,当每个 Mocking 框架都明确表示它只能在给定具体类时使用虚拟方法时?

*我们不要通过讨论替代方法(例如 Extract&Override 或运行时代理 Mocking 框架(例如 JustMock/TypeMock/Moles)或新的 Fakes 框架)来破坏讨论,我知道这些,但由于本主题之外的原因,这不是理想的解决方案。

0 投票
1 回答
2593 浏览

visual-studio-2010 - 使用 NSubstitute 的项目的代码分析 CA0001 错误

我有一个(.NET 4)测试项目,它引用(.NET 4)NSubstitute.dll。

当我对项目运行 CodeAnalysis 时,我收到了一些 CA0001 错误:

运行代码分析...

MSBUILD:错误:CA0001:读取模块“NSubstitute”时遇到以下错误:无法解析类型引用:[mscorlib,版本=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]System.Runtime.CompilerServices.ExtensionAttribute。

MSBUILD:错误:CA0001:Rule=Microsoft.Interoperability#CA1404,Target=arcplan.test.engage.admin.ecmFramework.CAppSettingsTest.#IsSettingsStoreReadyToUse_SettingsStoreIsNotReady_ReturnsFalse():读取模块“ECMFrameworkTest”时遇到以下错误:方法类型参数在位置0 无效。

MSBUILD:错误:CA0001:Rule=Microsoft.Security#CA2122,Target=arcplan.test.engage.admin.ecmFramework.CAppSettingsTest.#IsSettingsStoreReadyToUse_SettingsStoreIsNotReady_ReturnsFalse():读取模块“ECMFrameworkTest”时遇到以下错误:方法类型参数在位置0 无效。

(ETC。)

有谁知道如何解决这个问题?

0 投票
1 回答
1847 浏览

c# - NSubstitute 在循环中多次调用时返回意外值

在使用 NSubstitute 模拟带有输出参数的方法时,我遇到过这种情况。我不确定如何最好地用文字解释它,所以我将使用一些人为的例子和测试用例......

在这个人为的示例中,我将使用一个 NSubstitute 模拟IDictionary<string, string>.

现在,当我以简单的方式使用这个模拟对象时,它会按预期返回:

但是,当我在 for 循环中调用相同的代码时,会出现一些意外行为:

特别是,Assert.That(result, Is.True);断言在循环的第一次迭代中通过,但在第二次(以及任何后续)迭代中失败。

但是,如果我将该string value;行修改为string value = null;,则断言将通过所有迭代。

是什么导致了这种异常?这是由于我缺少 C# for 循环的某些语义,还是 NSubstitute 库的问题?

0 投票
1 回答
1349 浏览

vb.net - NSubstitute 和模拟一个对象来触发一个事件

我目前正在使用 NSubstitute 作为我的模拟框架,并且我做得相当不错,除了一个例外是......

我试图模拟从我的模拟对象内部调用事件的交互,不幸的是我真的很难做到这一点。设置是这样的......

...所以在我的单元测试中,我需要模拟“MyRoutineThatInvokesMyMockedEvent”以接收 ID,然后引发“MyMockedEvent”。到目前为止,我已经想出了...

...但我坚持实际上提出了以下无效的事件...

...我确实有一个理论,这在 VB.NET 中可能是不可能的(不创建辅助例程),但很乐意感谢任何有关如何在没有辅助例程的情况下实现上述目标的帮助。

0 投票
4 回答
7543 浏览

nsubstitute - N替换多个返回序列

我想替换对象以返回不同对象的序列。例如:

将返回resourceString 然后resourceString2 然后异常。

或者是这样的:

将返回resourceString,然后是异常,然后是resourceString2。

我怎样才能做到这一点?

0 投票
5 回答
19385 浏览

c# - 是否建议模拟具体课程?

模拟框架网站中给出的大多数示例都是模拟接口。假设我目前正在使用的 NSubstitute,他们所有的模拟示例都是模拟接口。

但实际上,我看到了一些开发人员模拟具体类。是否建议模拟具体课程?

0 投票
1 回答
863 浏览

.net - 如何替换异常?

我想替换一个异常和它的字段。

像这样的东西:

此代码由 NSubstitute 引发 Castle.Proxies.ExceptionProxy 或 NSubstitute.Exceptions.CouldNotSetReturnException。

我怎样才能做到这一点?