通常模拟方法调用

时间:2011-09-22 15:55:49

标签: mocking rhino-mocks

假设我有一个强类型的缓存接口,我想模拟。它需要任何类型的对象并返回它们,如下所示:

interface IMyCache
{
   void Add( int key, object obj );
   T Get<T>(int key);
}

我可以编写一个RhinoMocks存根,它将模拟我发送给它的任何参数类型吗?理想情况下,它看起来像这样:

var mock = MockRepository.GenerateStub<IMyCache>();
mock.Stub( m => m.Get<T>(1234)).Return( new T());

这不起作用,因为它期望T是一个具体的类,但我想将它泛化。这可能吗?

1 个答案:

答案 0 :(得分:3)

我认为你不能。使用rhino mocks编写测试时,需要遵循编译器的规则,并避免指定泛型类型T,使编译器不满意。

如果您需要在多个测试之间重用该存根代码,每个测试使用不同类型的T,您可以按照此处的建议制作一个帮助方法:Rhino Mocks: How to stub a generic method to catch an anonymous type?