进行试验的组织方法-C#
我现在有一个类,在这个类中有15个左右的私有方法,它们在计时器运行的循环中执行某些任务。其中有些方法调用数据库,有些则不调用 问题是…我如何安排这些,以便我可以设置类,以便我可以伪造一个repos或执行过程 这是我现在的一个简化版本进行试验的组织方法-C#,c#,unit-testing,testing,class-design,C#,Unit Testing,Testing,Class Design,我现在有一个类,在这个类中有15个左右的私有方法,它们在计时器运行的循环中执行某些任务。其中有些方法调用数据库,有些则不调用 问题是…我如何安排这些,以便我可以设置类,以便我可以伪造一个repos或执行过程 这是我现在的一个简化版本 public class Manager : IManager { System.Timers.Timer tm; private bool runningAsService; private List<Database> Dat
public class Manager : IManager
{
System.Timers.Timer tm;
private bool runningAsService;
private List<Database> Databases = new List<Database>();
private LogClass Log;
public Manager(bool RunningAsService, LogClass log)
{
runningAsService = RunningAsService;
Log = log;
tm = new System.Timers.Timer(Settings.idle_time * 1000);
tm.Elapsed += new System.Timers.ElapsedEventHandler(delegate { PerformDuties(); });
}
public void Start()
{
tm.Start();
PerformDuties();
}
private PerformDuties()
{
//Call the other 10-15 private methods to perform all the tasks needed.
}
}
公共类管理器:IManager
{
System.Timers.Timer tm;
私人布尔运行服务;
私有列表数据库=新列表();
私有日志类日志;
公共管理器(布尔运行服务,日志类日志)
{
RunningAService=RunningAService;
Log=Log;
tm=新系统.定时器.定时器(Settings.idle_time*1000);
tm.appead+=new System.Timers.ElapsedEventHandler(委托{PerformDuties();});
}
公开作废开始()
{
tm.Start();
性能();
}
私人表演()
{
//调用其他10-15个私有方法来执行所有需要的任务。
}
}
如果我正确理解了您的问题,那么这听起来像是需要在哪里提供对象管理器来完成其工作。它们可能是真实的对象(一个实际的数据库连接),也可能是一个与之类似的伪对象
我是否正确理解了您的问题?每个Db操作都将以CRUD操作结束。因此,您可以从数据库类中提取IDatabase,换句话说,提取数据访问层,如下所示:
public interface IDatabase<T>
{
T CreateItem();
T ReadItem(Id id);
bool UpdateItem(T item);
bool DeleteItem(T item)
}
公共接口IDatabase
{
T CreateItem();
T ReadItem(Id);
bool更新项(T项);
bool删除项(T项)
}
并通过Setter或Ctor注入,使用依赖项注入(使用DI框架等)将数据库列表注入到管理器
类中
希望这有意义……) 是的……我想是的……只是不知道如何构造它,这样我就不必点击数据库来测试它。我了解数据库的另一面,它更多的是关于其他方法,因此如果我有一个ITaskRunner,我将它传递到ctor,它也需要日志,那么它是否还需要将日志实例传递给TaskRunner以及管理器??