在创建模拟时如何组合两个接口?

sdu*_*ooy 16 .net c# rhino-mocks

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

Anu*_*noy 15

使用Rhino Mocks

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

找到并使用了来自http://www.richard-banks.org/2010/08/mocking-comparison-part-11-multiple.html的信息

  • 如果其他人发现了这一点,请注意它是Generate**Mock**而不是'GenerateStub`.存根版本没有多个类型参数. (3认同)

jal*_*ert 12

它不是动态的,但肯定很简单:在测试程序集中创建一个接口,除了实现其他两个接口之外什么都不做:

internal interface ICombined : IFirstInterface, ISecondInterface {}
Run Code Online (Sandbox Code Playgroud)

然后嘲笑ICombined.


sdu*_*ooy 3

使用 Rhino Mocks 可以生成具有多个接口的模拟,如下所示:

var mocker = new MockRepository();
var mock = mocker.CreateMultiMock<IPrimaryInterface>(typeof(IFoo), typeof(IBar));
mocker.ReplayAll();
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“ReplayAll”是一种[过时的 Rhino Mocks 风格](http://stackoverflow.com/questions/6078061/what-is-replayall-and-verifyall-in-rhinomocks) (2认同)