2014-02-17 73 views
0

我創建了一個基本API控制器,允許我從標題訪問數據。從webapi2.1標題檢索數據的正確方法

public virtual int GetHeaderData() 
    { 
     if (Request != null) 
     { 
      var headers = Request.Headers; 
      int customValue; 
      if (headers.Contains("mycustomvalue")) 
      { 
       int.TryParse(headers.GetValues("mycustomvalue").First(), out customValue); 
       return customValue; 
      } 
     } 
     throw new Exception(); 
    } 

因此,從任何控制器調用這個都很簡單, GetHeaderData()

但是,我作爲助手需要

Request.Headers

如果我真的是想在控制器讀取頭值,這似乎單元測試很困難級別還是應該在其他地方做,這將使這更容易測試?

我正在尋找一點建議,我應該做到以上的最佳方式。

謝謝

回答

0

我不會走這麼遠來調用這個的意見,但只是一個建議,你要考慮。首先,單元測試不應該決定你的類設計。可以在控制器級別設置請求對象,以便Request.Headers可以正確返回標題,供您進行單元測試。但是,如果我問自己這個問題是否屬於控制器,答案是否定的,不管是否需要單元測試。如果我要這樣做,我寧願爲HttpRequestMessage創建一個擴展方法。擴展方法只是語法糖,但它基本上是一個靜態輔助方法,我可以在任何地方使用擴展方法 - 控制器,消息處理程序,過濾器等。然後,如果我想要,我可以進行單元測試。