如何使用NUnit模拟属性?
如何使用NUnit模拟属性?
注意 :我发现这个外围模拟答案非常有用,并将其作为一个独特的问答条目重新用于其他人,以供其他人查找。
其他答案也欢迎。
NUnit-Discuss注意: NUnit Mocks是在一个周末创建的玩具模拟实现[…]我开始认为这是一个错误,因为你远远不是第一个依赖它的人。
– http://groups.google.com/group/nunit-discuss/msg/55f5e59094e536dc
(NUnit Mocks上的Charlie Pool)
要在以下示例中模拟Names属性…
Interface IView { List Names {get; set;} } public class Presenter { public List GetNames(IView view) { return view.Names; } }
针对属性的NUnit Mock解决方案
using NUnit.Mocks;
在NUnit中,可以使用模拟库的Expect *(..)方法,使用get_PropertyName模拟get访问器和set_PropertyName模拟set访问器来模拟PropertyName ,如下所示:
List names = new List {"Test", "Test1"}; DynamicMock mockView = new DynamicMock(typeof(IView)); mockView.ExpectAndReturn("get_Names", names); IView view = (IView)mockView.MockInstance; Assert.AreEqual(names, presenter.GetNames(view));
因此,在顶部的特定代码示例中, .Names属性被模拟为get_Names或set_Names 。
等等。
考虑到NUnit似乎只为目标方法提供了模拟方法, 这篇博文提供了额外的见解:
我开始考虑它并意识到Property getters和setter只是被视为特别命名的方法