【问题标题】:Mocking a method call generically一般模拟方法调用
【发布时间】:2011-09-22 15:55:49
【问题描述】:

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

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 是一个具体的类,但我想对其进行泛化。这可能吗?

【问题讨论】:

    标签: mocking rhino-mocks


    【解决方案1】:

    我不认为你可以。使用rhino mocks编写测试时,需要遵守编译器的规则,避免指定泛型类型T,编译器不爽。

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

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 2023-03-13
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2021-11-14
      • 1970-01-01
      • 1970-01-01
      • 2022-10-24
      相关资源
      最近更新 更多