要解决这个问题,我定义的接口
public interface ITaskScheduler
{
void QueueBackgroundWorkItem(Action<CancellationToken> workItem);
}
在生产代码我注入实现
public class AspNetTaskScheduler : ITaskScheduler
{
public void QueueBackgroundWorkItem(Action<CancellationToken> workItem)
{
HostingEnvironment.QueueBackgroundWorkItem(workItem);
}
}
在测试代码我注入实现
public class TaskScheduler : ITaskScheduler
{
public void QueueBackgroundWorkItem(Action<CancellationToken> workItem)
{
workItem.Invoke(new CancellationToken());
}
}
我认为这是一个好的解决方案,因为单元测试工作,我的队列后台任务解耦从HostingEnvironment
。
这就是它应该如何解耦d!应该是被接受的答案! – Mrchief 2015-06-19 03:09:20