我是编写单元测试的新手,所以我一同学习。我正在使用带有MsTest框架的Rhino Mocks并有一些问题。
我在哪里可以找到关于犀牛嘲讽的一些文档,用解释概述其功能,所以我可以打印并检查?
我已经看到了以下两种关于期望的技术的大量例子,这对于特定情况更好或更适合?
Expect.Call( delegate { mockTestClass.MethodToMock(param) } ).Return(true);
或
var mockTestClass = MockRepository.GenerateMock<TestClass>();
mockTestClass.Expect( m => m.MethodToMock(param) ).Return( true );
接下来我想知道存根和模拟类之间的区别是什么以及在哪些场景中应该使用什么?
感谢您的帮助。
答案 0 :(得分:4)
我在哪里可以找到关于犀牛嘲讽的一些文档,用解释概述其功能,所以我可以打印并检查?
Rhino Mocks文档为here,好的wiki为here。一般情况下,请注意提及3.3或更低版本的任何内容,因为它会有些过时。
对于特定情况哪个更好或更适合?
第二种方式更多&#34;流利&#34;并推荐。
存根和嘲笑之间有什么区别
以下是一些资源:
答案 1 :(得分:0)
如果您想检查调用的具体方法并且返回值无关紧要,我建议使用AAA syntax和AssertWasCalled()
方法:
// Arrange
var mock = MockRepository.GenerateMock<ICustomType>();
var service = new MyService(mock);
// Act
service.DoSomething();
// Assert
// ensures that SomeMethod of the mock was called
// whilst service.DoSomething() call
mock.AssertWasCalled(m => m.SomeMethod());
RhinoMocks框架透视图中的存根和模拟之间的区别如下:
Repeat().Any()
等等以便存根default(T)
给定的返回类型T
,Stub的属性是普通属性有关Mocks和Stubs之间差异的更多详细信息,请参阅Mauricio答案中提供的一系列良好链接,我建议Martin Fowler的工作。