如何使用Rhino.Mocks的界面集合进行测试

时间:2013-01-09 18:10:17

标签: list rhino-mocks stub

在我的界面

public IMyListInterface : IList<IMyItem> { void Foo(); }

如何轻松创建一个测试使用IMyListInterface的类的示例。

目前我正在使用GenerateStub<MyListInterface>()并将所需的方法/属性委托给List<IMyItem>列表,但这很乏味。

目前要使以下代码正在测试中

foreach (var match in matchList)

我在我的测试类

中执行以下操作
IList<IMyItem> baseList = new List<IMyItem>();
IMyListInterface matchList = MockRepository.GenerateStub<IMyListInterface>();

matchList.Stub(m => m.GetEnumerator()).Return(null).WhenCalled(i => i.ReturnValue = baseList.GetEnumerator());

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

在抽象基类中实现接口以进行测试:

public abstract MyMockableList : List<MyItem>, IMyListInterface
{
    public abstract void Foo();
}

然后您可以使用MockRepository.GenerateStub<MyMockableList>(),它将作为普通列表运行(RhinoMocks不会覆盖从List<MyItem>继承的方法),但您仍然可以删除Foo()方法。