假设我在 C# 中有以下代码:
public class AppleTree
{
public AppleTree()
{
}
public string GetApple
{
return new Fruit("Apple").ToString();
}
}
其中 Fruit 是没有接口的第三方类。
我想为 AppleTree 类创建一个单元测试,但我不想运行 Fruit 类。相反,我想注入 Fruit 类,以便我可以在测试中模拟它。
我该怎么做呢?我可以创建一个创建苹果的工厂,然后向该工厂添加一个接口,例如:
public class FruitFactory : IFruitFactory
{
Fruit CreateApple()
{
return new Fruit("Apple");
}
}
现在我可以将 IFruitFactory 注入 AppleTree 并使用 CreateApple 而不是 new Fruit 作为:
public class AppleTree
{
private readonly IFruitFactory _fruitFactory;
public AppleTree(IFruitFactory fruitFactory)
{
_fruitFactory = fruitFactory
}
public string GetApple
{
return _fruitFactory.CreateApple().ToString();
}
}
现在我的问题是:有没有一种无需创建工厂就可以做到这一点的好方法?例如,我可以以某种方式使用像 Ninject 这样的依赖注入器吗?