MicroSoft以不同的回报伪造静态

时间:2015-04-01 16:34:53

标签: c# unit-testing microsoft-fakes

我正在尝试对使用通用静态工厂类的对象进行单元测试。我真的不自由地写出工厂。

我必须使用Microsoft Fakes来填充它。 (我认为)之前从未使用过它。我的问题是,它是一种使用三次的通用工厂方法,需要返回3组不同的结果。模拟具有查询方法的能力,并且每次都返回不同的结果。假货有这种能力吗?

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
}

感谢您的任何指示!

1 个答案:

答案 0 :(得分:0)

显然我正在走上正轨。它返回如上所述的不同结果。只需要让所有的模拟都正确。

由于