[英]dependecy injection and unit testing - static helper methods or private instance methods
從單元測試和依賴注入的角度來看,在輔助方法方面通常采用的規范是什么?
這是我的示例情況:
public class GoodiesController : Controller
{
private IMyContext _context;
public GoodiesController(IMyContext context)
{
_context = context
}
public async Task<IAction> GetThoseGoodies()
{
if(YouLikeThemThisWay(Request.Path))
{
var result = await _context.GoGetThemThisWay()
} else { }
}
我的問題是,我最好將YouLikeThemThisWay(string path)
作為某個類中的靜態助手或作為私有實例方法嗎? 假設我可能有幾個像YouLikeThemThisWay
的喜歡?
這實際上取決於你的YouLikeThemThisWay(string path)
方法的作用。 我使用靜態方法的規則如下:
基本上,小輔助函數很容易測試,不會影響狀態或通常可以靜態。 如果涉及到狀態,則例程需要您通常會注入的依賴項,或者例程正在進行IO或IPC調用,然后不要使其靜態。
對依賴性問題的一個警告是技術上你可以使用方法注入來處理依賴項,但我喜歡保持簡單。 你的方法可能是靜態的。
重用也是靜力學中的一個重要因素。 如果例程只在一個類中使用,那么靜態化可能毫無意義。 我的大多數靜態方法都存在於任何地方都可以輕松訪問的輔助類中。
編輯:請注意,我通常要求這五條規則中的大部分或全部都支持靜態,以便我甚至考慮制作靜態的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.