我继承了一个WebApi2应用程序,它有一个非常重的BaseController
而没有使用DI而且没有任何测试。
我正在尝试创建一个服务并从基本控制器中移出一些逻辑,因为我相信这将使我的生活更容易测试应用程序并保持它向前发展。
基础
中的几个方法示例public virtual string GetControllerName()
{
return this.ControllerContext.ControllerDescriptor.ControllerType.Name;
}
public virtual string GetActionName()
{
return this.ActionContext.ActionDescriptor.ActionName;
}
我依赖ControllerContext
& ActionContext
如果我可以将这些抽象为服务,我可以对结果进行模拟,这样我的测试就不会依赖于this.Request
有没有人对如何让我的服务工作有任何指示。到目前为止我有这个
public ApplicationService(ILog log,
HttpRequestMessage httpRequestMessage)
{
_log = log;
_httpRequestMessage = httpRequestMessage;
}
public virtual string GetControllerName()
{
// return this.ControllerContext.ControllerDescriptor.ControllerType.Name;
throw new NotImplementedException();
}
public virtual string GetActionName()
{
return _httpRequestMessage.GetActionDescriptor().ActionName;
}
传递httpRequestMessage
感觉有点不对......也许这没关系....访问ControllerContext
我需要通过HttpControllerContext
再次感觉不对。
有没有人对我可以用于我的服务的干净方法有任何建议,这将使我能够在没有太多头痛的情况下进行测试?