目前我有一个工厂类,我有方法使用反射实例化不同的类并返回所有类实现的基接口。代码工作正常。但当我转向在类上编写单元测试(ms-test)时,当我尝试实例化多个类时,我遇到了问题
工厂类:
public class BusinessFactory : IBusinessFactory
{
public BusinessFactory()
{
}
public IBaseBusiness Create<T>() where T : class
{
return (IBaseBusiness) Activator.CreateInstance(typeof(T));
}
}
单元测试:
我试图将IBusinessFactory
存根并注入我测试的类中,这样我就可以伪造该类使用的实现。
示例:未能完成TestInit方法,并且在实例化class2的存根时失败。
interface IClass1 : IBaseBusiness{}
public Class1 : IClass1{}
interface IClass2 : IBaseBusiness{}
public Class2 : IClass2{}
public TestFactory{
[TestInitialize]
public void TestInit()
{
var fkBusFac = new StubIBusinessFactory();
fkBusFac.CreateOf1<Class1>(() => new StubIClass1() { });
fkBusFac.CreateOf1<Class2>(() => new StubIClass2() { });
}
有人可以帮忙吗?
答案 0 :(得分:0)
不是你问题的答案,但......
如果我执行以下操作会发生什么?:
var business = Create<string>();
这里绝对没有类型安全。如果创建的对象实现IBaseBusiness
,请确保它,并且只需调用new()
(哦,如果它是一个工厂方法,你不应该让它静止吗?):
public static IBaseBusiness Create<T>() where T : IBaseBunsiness, new()
{
return new T();
}