假设我有两个类,设置如下:
public class ClassAImpl : IInterfaceA
{
private ClassBImpl _someObject;
public ClassAImpl() { }
public IInterfaceB prepare
{
get
{
if (_someObject == null)
_someObject = new ClassBImpl();
return _someObject;
}
}
}
public interface IInterfaceB
{
string doSomething(int p);
}
public class ClassBImpl : IInterfaceB
{
public ClassBImpl() { }
public string doSomething(int p)
{
return "hi";
}
}
我的最终目标是能够模拟doSomething
的返回值,通过ClassBImpl
示例中的对象。现在,使用接口单独模拟已经足够容易了。但是我不能将IInterfaceB
的模拟接口传递到ClassAImpl
中,因为我需要的是对象,而不是接口。我不能覆盖方法本身,因为它不是虚拟的。
是否有可能模拟一个接口,然后从它创建一个对象?
1条答案
按热度按时间q8l4jmvw1#
代码中有问题的行如下
要删除对具体类的直接依赖,可以创建一个接受工厂的构造函数,并将
_someObject
更改为接口类型。然后对
IFactory
、ConcreteFactory
和MockFactory
进行编码。回到测试中,您可以执行以下操作
在您的生产代码中,您可以执行以下操作