2016-05-12 39 views
1

對於input的不同值,可以很容易地模擬string DoStuff(int input)這樣的方法,並且所有未列出的值均爲默認值。犀牛讓我嘲笑基於類型的通用方法嗎?

但是對於不同類型的string DoStuff<T>()方法如何T

這是可能的,如果是這樣怎麼樣?

回答

2

是的,你可以爲泛型方法的行爲就像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)); 

}