我有一个像这样的抽象工厂。
public abstract class AbstractFactory
{
public abstract ISyncService GetSyncService(EntityType entityType);
}
我有这样的具体实现。
public class SyncFactory : AbstractFactory
{
private readonly IOperatorRepository _operatorRepository;
public SyncFactory( IOperatorRepository operatorRepository)
{
_operatorRepository = operatorRepository;
}
public override ISyncService GetSyncService(EntityType entityType)
{
return new OperatorSyncService(_operatorRepository);
}
}
这个具体工厂是通过这样的方法访问的。
public void MethodTobeTested()
{
var syncService =
new SyncFactory(_operatorRepository).GetSyncService(entityType);
}
现在我需要为 MethodTobeTested() 编写一个单元测试。
我像这样嘲笑 GetSyncService() 的返回值。但它调用的是实际的 OperatorSyncService,而不是 mock。我需要这个模拟来模拟 OperatorSyncService 中的另一个方法
private Mock<SyncFactory> _syncServiceMock;
_syncServiceMock = new Mock<SyncFactory>();
_syncServiceMock.Setup(m => m.GetSyncService(operator)).Returns(_operatorSyncServiceMock.Object);
关于如何解决这个问题的任何想法?