问题标签 [nmock]

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 投票
2 回答
2317 浏览

c# - 单元测试时在方法内创建的模拟对象

我有以下情况:

我知道如果我使用依赖倒置原则,我可以模拟接口并且它会起作用。问题是这些实例仅在此方法中需要,因此在类级别创建它们没有意义。最重要的是,有些方法有 5-6 个对象声明,因此将这些作为参数传递会使参数列表膨胀。

无论如何我可以使用 Moq、NMock 等来模拟这些类(它们基于一个通用接口)?

0 投票
1 回答
411 浏览

c# - NMock 方法混合 WithArguments 和 WithAnyArguments

执行单元测试时,我在模拟方法时犯了一个错误。我试图根据要输入的参数返回不同的结果,否则返回默认答案。问题是我总是收到默认答案。

0 投票
1 回答
63 浏览

c# - 带有数组参数的模拟方法,该参数将在调用后更改

我有一个使用引用参数(byte [])的模拟方法调用的问题,该参数在调用后会发生变化:

但通话后,我需要更改缓冲区数据。

如何在不更改生产代码的情况下模拟这种行为?

0 投票
0 回答
104 浏览

unit-testing - 如何在 C# 代码中模拟/存根 Java 对象?

我的 C# 代码使用的是用 Java (IKVM) 编写的类。该 Java 类提供了我在 C# 代码中调用的 2 个方法:

  1. GetInstance() - 它只返回该 Java 类的实例。
  2. GetSet() - 返回一个 java.util.Set,我对其进行迭代以进行一些处理。

我们使用 NUnit 和 NMock,我对 mocking/stubbing 比较陌生,所以我对如何为这段将返回 Java 对象等的 C# 代码编写单元测试用例感到很困惑。

任何帮助/指针将不胜感激。谢谢。

0 投票
3 回答
10089 浏览

c# - 测试使用 NUnit 调用私有方法的公共方法

我在一个类中有一个公共方法,该方法在该类中内部调用了一个特定的私有方法。它看起来像这样:

现在,我基本上想用 NUnit 测试这个公共方法。我正在使用 NMock 2.0 进行模拟。我该怎么做?因为,它在内部调用了这个我不想公开的私有方法。或者,如果我将私有方法改为受保护,是否有办法做到这一点?

0 投票
1 回答
45 浏览

unit-testing - NMock 是否支持 SharePoint?

是否有任何版本的 NMock 支持模拟 SharePoint?

我正在使用 Visual Studio 2012、SharePoint 2013。

这可以是 NMock 1、2 或最新版本 3 的任何版本。

我已经尝试查看文档,但没有任何东西让我说它是否有效。

0 投票
1 回答
3520 浏览

c# - C# 使用内部属性设置器模拟类

我正在尝试构建一个单元测试。Position 类在第三方库中实现。但是对于我的单元测试,我需要将 Size 属性设置为特定值。

我读了这篇文章:如何为包含只读成员的接口创建单元测试存根? 但无法弄清楚如何让它为我工作。

这是被测试的类(只是一个简化的例子)。方法中的pos参数CalcPositionMetric()必须是类型Position

这是我的单元测试的一部分:

但正如你所看到的,我得到了一个例外。有人可以帮我解决这个问题吗?也欢迎任何其他解决方案!

干杯康斯坦丁

0 投票
1 回答
134 浏览

nmock - 如何指定模拟方法的集合参数应该只有一个元素

我正在为采用单个IList<>参数的方法设定期望。

我如何在NMock3中表达以下语句:

我想象的解决方案如下所示:

0 投票
1 回答
218 浏览

c# - 如何在“Will”操作中使用 NMock3 方法参数

我试图模拟一个将异常作为参数的方法,在某些情况下可能会抛出该异常。有没有办法模拟这个,这样模拟的方法可以做到这一点?

我正在想像下面这样的语法。

有没有办法做到这一点?在这种情况下,我实际上知道我期待什么类型的异常,所以理论上我可以重建它,但抛出被调用的异常似乎更好。

0 投票
1 回答
305 浏览

c# - 在 .NET NMock2 中模拟将项目添加到列表中

我在单元测试中使用 NMock2 (2.1.3641.27570)。

IList<MyObj> values = _mock.NewMock<IList<MyObj>>();

当我的测试对象调用我的模拟对象上的Valuesget 属性时,我返回那个模拟:

Expect.AtLeastOnce.On(_myKeepMock).GetProperty("Values").Will(Return.Value(values));

然后我希望value将哪个 aMyObj添加到我的列表中values

Expect.AtLeastOnce.On(values).Method("Add").With(value);

为了避免unexpected invocation of list'1.Add在执行时,我知道我必须重写类Equals中的方法MyObj

public override bool Equals(object obj) { ...}

并按值而不是参考进行比较。但是在执行测试时它甚至不会被调用(断点未命中)。

当调用中添加到列表中的项与被测对象添加的项的值相等时,我需要做什么才能通过测试?

我阅读了有关自定义匹配器的信息,但不确定这些是否适用于此。

更新

完整示例:

输出:

注意它是如何期望调用的list'1.Add(<WRM.Common.RiskCalculation.Tests.ModData>) ,然后显示它没有调用list'1.Add(<WRM.Common.RiskCalculation.Tests.ModData>)