MicroSoft 以不同 returns 静态伪造
MicroSoft Fakes on static with different returns
我正在尝试对使用通用静态工厂的对象进行单元测试 class。我真的不能随意写出工厂。
我必须使用 Microsoft Fakes 来填充它。 (我认为)以前从未使用过它。我的问题是它是一个使用了三次的通用工厂方法,需要 return 3 组不同的结果。 Mock 能够对一个方法进行排序,并且每次都 return 不同的结果。假货有这个能力吗?
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
}
感谢指点!
显然我走上了正轨。它 returns 与上面列出的不同结果。只需让所有模拟正确即可。
谢谢
我正在尝试对使用通用静态工厂的对象进行单元测试 class。我真的不能随意写出工厂。
我必须使用 Microsoft Fakes 来填充它。 (我认为)以前从未使用过它。我的问题是它是一个使用了三次的通用工厂方法,需要 return 3 组不同的结果。 Mock 能够对一个方法进行排序,并且每次都 return 不同的结果。假货有这个能力吗?
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
}
感谢指点!
显然我走上了正轨。它 returns 与上面列出的不同结果。只需让所有模拟正确即可。
谢谢