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

namespaces - 在引用 NSubstitute 的程序集中使用 DynamicProxy 类型时,如何解决“类型存在于两个程序集中”故障?

我有一个使用DynamicProxy 3.1 进行运行时拦截的应用程序。我有一个使用NSubstitute进行模拟的测试程序集。我刚刚针对我完全引导InterceptWith的容器(用于拦截的结构映射)编写了一些“集成”测试,以便我可以断言从容器中出来的某些类型被正确代理。

但是,我收到此错误,表明 DynamicProxy 引用也在NSubstitute程序集中!(它似乎被合并了)。

无论如何围绕这个冲突?

0 投票
1 回答
19167 浏览

c# - NSubstitute:使用数组参数检查接收到的方法

我想验证我的 NSubstitute 模拟上的方法是否使用特定的数组参数调用。

说接口, IProcessor, 有一个方法void ProcessSomething(Foo[] something])。假设我的测试类名为Commander. 我这样设置我的测试:

Received()调用失败并显示:

所以这看起来像 ProcessSomething 是用其他数组调用的foos,对吧?

好吧,如果我改为测试这个,我使用 捕获参数值Arg.Do(),它会成功:

因此,捕获参数并比较它是否相等(在此示例中使用 NUnit)是可行的,但验证接收到的调用失败。

这是 NSubstitute 中的错误,还是我用错了?

0 投票
1 回答
673 浏览

asp.net-mvc - 如何在 Substitute 中将接口作为参数传递给 Controller 类

我是 nSubstitute 的新手。我正在为我的控制器类编写测试方法。我有一个名为 GetDefaultStateTest() 的 TestMethod,它具有 Substitute 类,如下所示

因为我的控制器类具有如下的参数化构造函数。

在运行测试方法时,它会引发空引用问题。因为参数 ICustomer 为空

如何解决这个问题。

0 投票
2 回答
835 浏览

unit-testing - 可以将 MS Fakes 垫片与 NSubstitute 模拟一起使用吗?

我们使用NSubstitute模拟单元测试的外部对象。然而,许多遗留类不是通过接口调用的,也不能轻易地用模拟替换。

我考虑过使用Microsoft Fakes,但根据“Mock framework vs MS Fakes frameworks ” 问题的答案

“如果您已经在使用功能更全面的模拟框架,您可能会觉得 Fakes 存根中缺少一些重要的部分。”

是否可以在相同的测试中使用带有 NSubstitute 模拟的 MS Fakes 垫片?

我们应该期待任何兼容性问题吗?

0 投票
2 回答
5885 浏览

c# - NSubstitute 模拟泛型方法

我在接口中有以下方法签名:

我试图模拟:

Microsoft.CSharp.RuntimeBinder.RuntimeBinderException这会在第 2 行引发异常:

“long”不包含“Returns”的定义

关于如何T GetConfig<T>(string setting, dynamic settings)正确模拟的任何想法?

0 投票
2 回答
2914 浏览

c# - NSubstitute 和 Unity

我目前正在尝试使用 Unity 和 NSubstitute 学习 DI 和 Mocking。我还使用了一个取自这个问题的自动模拟扩展:Unity(而不是 Castle Windsor)可以做到这一点吗?

在下面的单元测试中,我试图从我的方法 Add() 中设置 NSubstitute 返回值 10。但是,当通过控制器调用进行调试时,分配的值是默认的 0 而不是预期的 10。代理似乎没有拦截方法调用。

我怀疑这是由于没有正确注册我的类型/容器造成的,有人能指出我正确的方向吗?

还有我的控制器代码

0 投票
1 回答
442 浏览

.net - 模拟在运行时使用 NSubstitute 创建的对象的 LINQ-to-SQL 导航属性

我被难住了。我一直在努力在这里和 NSubstitute 的文档中找到任何可行的答案来解决我的问题。

我正在尝试对服务方法进行单元测试,在该方法中,将对象添加到存储库后,我访问该对象的导航属性以执行其他工作。当单元测试到达代码中访问新对象的导航属性的位置时,我得到一个 NullReferenceException。我明白为什么我会收到异常,因为我没有告诉它它应该在模拟中返回什么,但我不知道如何告诉单元测试在访问导航属性时返回什么。这都是因为对象是在运行时创建的。

为简洁起见,我将只包括相关的方法部分。

如果还有什么我可以提供的帮助,请告诉我。

0 投票
1 回答
688 浏览

autofac - 使用 AutofacContrib.NSubstitute 为具体类注册假的简单方法

一个被解析为的类

可以这样伪造(用于测试)

但是,如果我的课程被解决为

如何在 autofac 注册中伪造这个?如果我使用 AutofacContrib.NSubstitute。我怎样才能实现这样的目标

0 投票
1 回答
811 浏览

c# - 如何将参数传递给使用 System.Action 作为输入参数的数据访问层?

我正在尝试为我最近继承的应用程序创建一些单元测试。目前正在使用 NSubstitute,因为这是以前的程序员使用的,但我不喜欢它。

我正在测试的方法调用 DataService 类的 Create 方法。

调用创建方法

数据服务创建方法:

我采用的方法(也许还有更好的方法)是使用 NSubstitute 来模拟 DataService。当我在最后做我的断言时,我正在检查以确保 Create 方法被调用:

但是,我还想验证发送到该方法的输入是否正确,这就是我遇到麻烦的地方。我可以获得传递给 Create 方法的 System.Action 对象,但我不知道如何提取参数(如调用 create 方法代码片段中发布的 ContactRoleId、ContactId 等)。

所以毕竟我要问的是:

  1. 如何访问这些输入参数,以便验证是否将正确的参数传递给数据服务?甚至可能吗?
  2. 有没有比我目前正在尝试做的更好的方法来做到这一点?

解决方案

0 投票
1 回答
845 浏览

c# - NSubstitute When...Do 定义不会被后续定义覆盖

对于上面的代码片段,(1) 和 (2) 都显示了 counter++ 行为,表明 When...Do 行为没有被覆盖。我需要这种行为来生成我想要连接不同回调的测试场景。

我应该如何实现这一目标?