2016-05-12 89 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)); 

}