创建模拟时如何组合两个界面?

问题描述:

我们使用Rhino Mocks来执行一些单元测试,并需要模拟两个接口。只有一个接口在对象上实现,另一个接口是使用面向方面的方法动态实现的。是否有一种简单的方法来动态组合这两个接口,以便可以创建一个模拟并为两个接口存留方法?创建模拟时如何组合两个界面?

使用犀牛制品多个接口的模拟可以像这样产生:

var mocker = new MockRepository(); 
var mock = mocker.CreateMultiMock<IPrimaryInterface>(typeof(IFoo), typeof(IBar)); 
mocker.ReplayAll(); 
+2

音符所使用的信息`ReplayAll`是[过时的犀牛嘲讽样式](http://*.com/questions/6078061/what-is-replayall-and-verifyall-in-rhinomocks) – Default 2013-04-15 12:34:30

这不是动态的,但肯定很简单:创造出什么也不做比实现其他两个接口之外的其他检测装置内的接口:

internal interface ICombined : IFirstInterface, ISecondInterface {} 

然后嘲笑ICombined

使用犀牛制品

var mock = MockRepository.GenerateMock<IFirst, ISecond>(); 
mock.Stub(m => m.FirstProperty).PropertyBehavior(); 
((ISecond)mock).Stub(k=> k.SecondProperty).PropertyBehavior(); 

实测值和从http://www.richard-banks.org/2010/08/mocking-comparison-part-11-multiple.html

+3

如果其他绊倒t他注意到它是生成**模拟**而不是`GenerateStub`。存根版本没有多个类型参数。 – Default 2013-04-15 12:29:35