用不同的T拼写通用方法

时间:2012-09-04 12:19:04

标签: rhino-mocks-3.5

我有一个带有通用方法GetService的服务工厂。基于我为T传递的内容,它为我提供了针对该特定类的服务。

现在我有一个方法,它使用了多个这些服务,我需要将它们全部存根。 Ex: GetService<Coffee> , GetService<Tea>

mockrepo.Stub(x => x.GetService<Coffee>().Expect(c => c.RetrieveList(coffeeCollection)).IgnoreArguments());
mockrepo.Stub(x => x.GetService<Tea>().Retrieve(1)).Return(testrefDataRefEle1);

在上面的代码中,在第二个存根上我得到错误“对象引用未设置为对象的实例”。

1 个答案:

答案 0 :(得分:0)

你不能在Rhino.Mocks中做那样的递归模拟。您必须为具有Retrieve方法的任何对象创建存根,并将其设置为返回testrefDataRefEle1。然后设置GetService<Tea>的存根以返回另一个模拟对象。