【发布时间】:2016-05-12 11:33:38
【问题描述】:
对于input 的不同值模拟string DoStuff(int input) 之类的方法很容易,所有未列出的值都使用默认值。
但是对于不同类型的T,像string DoStuff<T>() 这样的方法呢?
这可能吗,如果可以,怎么办?
【问题讨论】:
标签: c# .net unit-testing mocking rhino-mocks
对于input 的不同值模拟string DoStuff(int input) 之类的方法很容易,所有未列出的值都使用默认值。
但是对于不同类型的T,像string DoStuff<T>() 这样的方法呢?
这可能吗,如果可以,怎么办?
【问题讨论】:
标签: c# .net unit-testing mocking rhino-mocks
是的,您可以为泛型方法设置行为,例如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));
}
【讨论】: