到目前为止,我一直在使用NUnit.Mocks来隔离我的课程,但是由于缺乏给我的反馈,我感到很恼火.所以我一直在寻找替代方案,但无处可去.
犀牛嘲笑:无法理解.一切都必须以完全不同的模糊方式完成,使测试代码几乎不可读.
Moq:无法弄清楚如何模拟属性getter.有样品,但我尝试时它们不起作用.
从我收集的内容来看,这些似乎是最受欢迎的.在我去尝试每一个之前,我想请大家提一下建议......
我的背景是C#2.0.我仍然非常熟悉新版.NET中的概念.因此,不需要这些东西的框架将是一个奖励.
谢谢.
编辑:我终于弄清楚为什么我的Moq测试不起作用.它与Moq无关,我现在正在进一步评估它.到目前为止看起来非常好......
我使用Moq并且我更喜欢实现而不是其他一些模拟框架的Replay方法 - 我发现它更自然.
你对物业有什么问题?要模拟从属性返回值,它就是
mock.Setup(foo => foo.Name).Returns("bar")
Run Code Online (Sandbox Code Playgroud)
简单的设计
Moq有一个流畅的界面,代码可以表现得非常漂亮.例如:
将模拟注入对象
mockView = new Mock<IView>();
mockModel = new Mock<IModel>();
realPresenter = new Presenter(mockView.Object, mockModel.Object);
Run Code Online (Sandbox Code Playgroud)测试Presenter对View事件作出反应的行为
mockView.Raise(v => v.SomeEvent += null, EventArgs.Empty);
mockModel.Verify(m => m.DoSomething());
Run Code Online (Sandbox Code Playgroud)精心反馈
我发现故障反馈非常有用,我通常可以很快找到问题.假设您希望调用具有特定参数值的方法并且它失败.
测试'MyProject.MyTest'失败:Moq.MockException:模拟上的预期调用至少一次,但从未执行过:v = >> v.DoSomething("Something") >未配置任何设置.
执行调用:Moq.Mock.ThrowVerifyException中的View.DoSomething("SomethingElse") (期望MethodCall,IEnumerable
1 setups, IEnumerable1 actualCalls,表达式表达式,Times次数,Int32 callCount)Moq.Mock.VerifyCalls(Interceptor targetInterceptor,MethodCall expected,Expression expression,时间)在Moq.Mock.Verify [T](模拟模拟,表达式1 expression, Times times, String failMessage) at Moq.Mock1.Verify(表达式`1表达式)MyTest.cs(118,0):
该起订量快速入门是很好的放在一起,一直到目前为止,我所需要的唯一参考.