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));
}