2015-04-01 30 views
0

我想单元测试使用泛型静态工厂类的对象。我没有真正的写出工厂的自由。我不得不使用微软假货来填补它。 (我认为)以前从未使用过。我的问题是,这是一种三次使用的通用工厂方法,需要返回3组不同的结果。模拟有能力对一个方法进行排序并每次返回不同的结果。假货有这种能力吗?MicroSoft伪造静态不同的回报

public static ReadOnlyCollection<T> Build<T>(IObjectA objA, IObjectB objB) where T : class 

它调用此方法的对象内3次不同的接口

IEnumerable<Base1> list = Factory.Build<Base1>(objA, objB); 
IEnumerable<Interface1> list= Factory.Build<Interface1>(objA, objB); 
IEnumerable<Interface2> list= Factory.Build<Interface2>(objA, objB); 

将如何测试方法找类似的东西?

using(ShimsContext.Create()) { 


Mock<Base1> mockObj1 = new Mock<Base1>(); 
       //manager.Setup(t=> t.) 

Mock<Interface1> mockObj2= new Mock<Interface1>(); 
       //manager.Setup(t=> t.) 

Fakes.ShimFactory.BuildOf1IObjectAIObjectB<Base1>((objA, objB) => new List<Base1>() { mockObj1.Object }.AsReadOnly()); 

Fakes.ShimFactory.BuildOf1IObjectAIObjectB<Interface1>((objA, objB) => new   
List<Interface1>() { mockobj2.Object }.AsReadOnly()); 

//Uses factory method 3 times 
MyObjectThatUsesTheFactory = new MyObjectThatUsesTheFactory(); 
//test 
} 

感谢您的指点!

回答

0

显然我正在轨道上。它返回上面列出的不同结果。只是让所有的嘲笑正确的问题。

谢谢