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

c# - NSubstitute 无法设置返回值 (CouldNotSetReturnException)

我有一个接口(称为IRepository),上面有这样的方法:

我正在尝试设置通过单元测试调用该方法时将返回的内容。像这样:

当我运行测试时,我得到了这个异常:

NSubstitute.Exceptions.CouldNotSetReturnException:找不到返回的调用。

该消息继续警告尝试使用实际课程执行此操作,但这不适用于我。

我尝试将我的null参数更改为更真实的东西:

但这并没有帮助......

任何想法我对这个替代品做错了什么?

(我的猜测是它与params关键字有关。)

0 投票
2 回答
19522 浏览

nsubstitute - 我可以让 NSubstitute 自动模拟我的具体课程吗?

我有一个用“NSubstitute”模拟的接口,它包含返回 concreate 类的属性,即返回值不是接口。例如

“SomeObj”具体类有一个默认构造函数,但“NSubstitute”总是为这些属性返回“null”。类本身不在我的控制之下,所以我不能简单地让它从接口派生。

'NSubstitute' 可以模拟这些类型的属性吗?或者有没有办法覆盖行为?否则我必须在测试之前手动初始化模拟,这可能是很多代码(即使它通过通用方法重用)。

也许我忽略了一个更简单的解决方案?

0 投票
1 回答
4241 浏览

c# - NSubstitute、out 参数和条件返回

我有一个与下面我想在 NSubstitute 中模拟的场景没有什么不同......

...使用此接口,我希望它采用文件名并检索字节数据。使用 NSubstitute 我想向它传递特定的文件名并返回不同的或空的字节数组。通常,我会通过在我的脚手架中指定参数并酌情使用“返回”元素来执行此操作。不幸的是,我不能使用“Arg.Any()”参数,因为它提供了......

ref 或 out 参数必须是可赋值变量

...但是如果我这样做,它始终是一个空字节数组。这是使用上面接口的快速演示...

简而言之,我需要声明“out”参数,但我必须为我的模拟调用分配一个变量——这在特定的“Returns”语句中无法识别。是否有可能实现类似...

提前致谢。

0 投票
2 回答
2418 浏览

c# - Autofixture + NSubstitute:冻结模拟?

我正在尝试访问注入到构造函数中的模拟(通过 Nsubstitute)类。

我正在使用以下代码

sut 被成功创建,一个名为“IFileUtils”的接口的模拟版本被注入到“MyService”的构造函数中。

但我需要访问它,所以在阅读后我相信我需要冻结对象,所以我可以像这样访问它

但我认为这段代码是 Moq 语法,因为找不到“Mock”。

通常,要创建一个类的 Nsubstitute,您可以执行以下操作

但是当然这并没有被冻结,所以它没有被使用并注入到构造函数中。

谁能帮忙?

0 投票
1 回答
8443 浏览

c# - 使用 NSubstitute 模拟泛型方法

我有一个带有许多通用方法的接口。这些方法根据传入的数据类型执行操作。如何使用 NSubstitute 模拟它?目前,我不得不求助于使用具体类而不是模拟,因为我无法处理将调用该方法的所有可能类型。

谢谢。

0 投票
1 回答
252 浏览

unit-testing - 单元测试:如何断言?断言返回结果或在模拟上调用了一个方法?

我正在尝试找出断言的最佳方法,我是否应该创建一个包含我应该返回的对象并检查它是否等于预期结果?

或者我应该针对模拟运行一个方法以确保该方法被实际调用。

我已经看到了这两种方式,我想知道是否有人对此有任何最佳实践。

当然,编写单元测试来断言在模拟上调用了一个方法会更快更容易,但更快更容易并不总是最好的方法——尽管有时可以。

每个人都断言,方法已被调用或断言返回的结果是什么?

当然,在单元测试中执行超过 1 个断言并不是最佳实践,所以答案可能是实际断言结果并调用该方法?所以我会创建 2 个单元测试,1 个检查结果,1 个检查方法是否被调用。

但是现在考虑到这一点,如果我得到一个我想我可以假设我的模拟方法被调用的结果,也许这太过分了。

0 投票
2 回答
10172 浏览

c# - 如何将 AutoFixture 与 NSubstitute 一起使用的示例

我经常使用 NSubstitute。我喜欢它。

我只是在研究 AutoFixture。看起来很棒!

我见过NSubstitute 的 AutoFixture,并在 Moq 中看到了一些关于如何使用此功能的示例。

但我似乎无法将其翻译成 NSubstitute。

我试过这个:

使用:

我得到一个对象,但没有填充任何属性(有点像 AutoFixture)。

我也试过:

这也给了我一个没有填充属性的对象。(请注意,如果我用PersonEntity,那么所有属性都会被填充。)

我确信有办法使这项工作,但我似乎无法找到它。

那么,鉴于我IPersonEntity上面的界面,有谁知道如何使用 AutoFixture 和 NSubstitute 给我一个填充的 IPersonEntity 对象?

0 投票
1 回答
3579 浏览

mocking - 如何使用 NSubstitute 模拟带有数组参数的方法?

我有以下界面:

我想创建一个模拟对象,实现IText哪个集合array[index]='f', array[index+1]='o', array[index+2]='o'whenCopyTo被调用。

NSubstitute 可以做到这一点吗?如果是这样,怎么做?

0 投票
1 回答
3018 浏览

asp.net-mvc - NSubstitute:在 MVC/Web Api 控制器中模拟请求、响应对象?

我试图找到如何从 MVC / Web Api 模拟控制器内部可用的请求和响应对象。

这可能吗,我没有注入 Request 和 Response 对象,这些是可用的,因为控制器继承自 ApiController 或 Controller。

有没有人有一些很好的例子可以通过 nsubstitute 访问这些?

还有其他对象,比如 context 呢?

0 投票
1 回答
1429 浏览

c# - Ninject:使用 NSubstitute 进行自动模拟?

谁能帮忙,我在使用 Ninject 和 NSubstitute 之间可用的自动模拟时遇到问题,实际上该包是一个名为 ninject 的打包调用 Ninject.MockingKernel.NSubstitute,它应该允许我使用 Ninject 创建模拟并返回注入模拟的实例。

Moq 和 Rhinomocks 似乎有一些示例,但我没有看到 NSubstitute 的任何示例。

到目前为止我所拥有的是

有人用吗?