2014-01-22 32 views
0

http://www.dotnetcurry.com/showarticle.aspx?ID=836此頁面,他們這樣做:如何模擬mvc方法+構造函數?

public class CarDealershipController:Controller 
{ 
    private ICarDealershipController:Controller repository; 

    public CarDealershipController:Controller(
    ICarDealershipController:Controller repository) 
    { 
    this.repository = repository; 
    } 

    public ActionResult List(string carid) 
    { 
    var cars = repository.GetCarById(carid); 
    return View("List", cars); 
    } 
} 

我稍微修改了代碼,通過添加carid參數。因爲此類要求發送到它的構造函數值,這是如何工作的,如果最初的電話是:

localhost/Home/List/carid 

如何構造函數初始化得到?

+0

是不是在鏈接本身?看看測試類的構造函數。雖然我寧願在TestInitialize方法中這樣做。 –

+0

依賴注入,特別是構造函數注入。 – danludwig

+0

你希望通過測試這個控制器來完成什麼?這裏似乎沒有太多可測試的邏輯。 – 48klocs

回答

1

此外,我強烈建議用C#專業測試驅動開發的詹姆斯·本德爾&傑夫McWherter

3

通常情況下,你會抓住像Unity,Ninject或類似的依賴解析器來爲你做這個。你使用任何接口註冊一個具體的類型,他們會構造它並將它傳遞給任何需要的構造函數。

要做到這一點,他們使用控制器工廠掛鉤到他們的解析器,而不是默認的控制器工廠,它真的只喜歡空的構造函數。

+0

我同意@SteveFenton。請參閱以下文章以瞭解如何在MVC4中執行此操作http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-dependency-injection –

0

在構造函數的情況下,我會推薦使用DI框架來幫助構造函數注入。在您的測試中,您將使用模擬框架來創建存儲庫的一個實例。

好像你在存儲庫的類名上有一個錯字。