1
对于input
的不同值,可以很容易地模拟string DoStuff(int input)
这样的方法,并且所有未列出的值均为默认值。犀牛让我嘲笑基于类型的通用方法吗?
但是对于不同类型的string DoStuff<T>()
方法如何T
?
这是可能的,如果是这样怎么样?
对于input
的不同值,可以很容易地模拟string DoStuff(int input)
这样的方法,并且所有未列出的值均为默认值。犀牛让我嘲笑基于类型的通用方法吗?
但是对于不同类型的string DoStuff<T>()
方法如何T
?
这是可能的,如果是这样怎么样?
是的,你可以为泛型方法的行为就像string DoStuff<T>()
:
public class IFoo
{
public string DoSomthing<T>();
public string DoSomthing<T>(T t);
}
[TestMethod]
public void TestMethod1()
{
var fakeObj = MockRepository.GenerateStub<IFoo>();
fakeObj.Stub(x => x.DoStuff<int>()).Return("1");
fakeObj.Stub(x => x.DoStuff<long>()).Return("10");
fakeObj.Stub(x => x.DoStuff<string>()).Return("XD");
fakeObj.Stub(x => x.DoStuff(3)).Return("2");
Assert.AreEqual("1", fakeObj.DoStuff<int>());
Assert.AreEqual("XD", fakeObj.DoStuff<string>());
Assert.AreEqual("10", fakeObj.DoStuff<long>());
Assert.AreEqual("2", fakeObj.DoStuff(3));
}