2013-06-05 30 views
2

我正在拆分並重新組合一個大型網站,並希望藉此機會在網站重新創建時進行一些測試驅動的開發。我遇到的問題是如何。我需要測試的很多項目處理用戶登錄時正在設置的會話變量(或其他變量)。但是,如果我正在測試單個頁面,我永遠不會登錄。使用VS2012進行ASP.NET的Microsoft單元測試

For例如:現在

[TestMethod()] 
[HostType("ASP.NET")] 
[UrlToTest("http://localhost:64769/UsersDetail.aspx")] 
public void GetCompanyId_Test() 
{ 
    var testID = GetCompanyID(); 

    Assert.AreEqual("123456789", testID); 

} 

,問題是,爲了GetCompanyID工作,它必須有被設置在登錄時可用的變量。

這可能嗎?我是否需要以某種方式模擬數據?

感謝

+1

我認爲在這種情況下的選項最好通過模擬來解決 – jordanhill123

+1

如果您正在重新創建該網站,爲什麼要使用Session?就個人而言,如果我正在重寫遺留網站,我要做的第一件事就是擺脫它的任何狀態(這正是會話引入的),並使其更加RESTful。重寫一些代碼和重寫這些代碼原來有什麼錯誤? –

+0

@DarinDimitrov有些事情必須存儲在會話中。 –

回答

1

你可能不得不改變GetCompanyID功能使用一些變量由在livesystem會議填充,並在單元測試系統的testsetup。唉,你不能在ASP.NET中模擬HttpSessionState - 請看這裏:How do I mock/fake the session object in ASP.Net Web forms?

另一個想法是在testsetup中實際執行登錄。

+0

謝謝。我很懷疑,但是想知道還有另一種方法可以做到這一點 – kurabdurbos