Csharp/C#教程:用Moq对类进行部分嘲弄分享


用Moq对类进行部分嘲弄

我想使用Moq仅模拟以下类的GetValue方法:

 public class MyClass { public virtual void MyMethod() { int value = GetValue(); Console.WriteLine("ORIGINAL MyMethod: " + value); } internal virtual int GetValue() { Console.WriteLine("ORIGINAL GetValue"); return 10; } } 

我已经阅读了一下这应该如何与Moq一起使用。 我在网上找到的解决方案是使用CallBase属性,但这对我不起作用。

这是我的测试:

 [Test] public void TestMyClass() { var my = new Mock { CallBase = true }; my.Setup(mock => mock.GetValue()).Callback(() => Console.WriteLine("MOCKED GetValue")).Returns(999); my.Object.MyMethod(); my.VerifyAll(); } 

我希望Moq使用MyMethod的现有实现并调用mocked方法,从而产生以下输出:

 ORIGINAL MyMethod: 999 MOCKED GetValue 

但这就是我得到的:

 ORIGINAL GetValue ORIGINAL MyMethod: 10 

然后

 Moq.MockVerificationException : The following setups were not matched: MyClass mock => mock.GetValue() 

我有种感觉,我完全误解了一些东西。 我在这里想念的是什么? 任何帮助,将不胜感激

好的,我在另一个问题中找到了答案: 如何模拟类的内部方法? 。 所以这是重复的,可以关闭。

不过,这是解决方案:只需将此行添加到要测试的项目的Assembly.config

 [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] // namespace in Moq 

您是否尝试指定可validation的:

上述就是C#学习教程:用Moq对类进行部分嘲弄分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

 my.Setup(mock => mock.GetValue()).Callback(() => Console.WriteLine("MOCKED GetValue")).Returns(999).Verifiable(); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/cdevelopment/1010390.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐