簡體   English   中英

單元測試中如何為httprequest usercontrol的Request賦值?

[英]How to assign a value to Request which is of httprequest usercontrol in unit testing?

我有一個使用 masterpage.asx.cs 中的 Request.UrlReferrer.Host 的方法。

protected string DoSomething()
{
  Request.UrlReferrer.Host is used
//Request is of httprequest usercontrol
}

我正在嘗試為此方法編寫一個單元測試用例。

並調用 target.DoSomething() 但請求具有 null 值。 我怎樣才能給它一個值,這樣 DoSomething() 方法就不會中斷?

請幫忙。

謝謝。

我將推薦一種不同的方法,因為這些值在HttpRequest中是不可設置的。

編寫一個 class,它的唯一職責是處理HttpRequest並生成適當的 output。然后從該 class 中提取一個接口。然后DoSomething將依賴於該接口。 對於您的測試,您將能夠提供一個“假的”或一個替代實現,它可以提供該方法隨后將在其邏輯中使用的數據。

例如,您可能有一個像這樣的界面

interface ICanHandleRequest { }

因此,您可以在生產代碼中擁有您的 DoSomething 方法通常會使用的實現。

class RequestHandler : ICanHandleRequest { } 

但是對於您的測試,您將創建一個不同的實現,以便可以測試您的 DoSomething 方法。

class TestHandler : ICanHandleRequest { }

如果您願意,也可以使用 mocking 庫(例如Rhino Mocks)來構建此類假貨。 這個想法是DoSomething不需要知道如何使用HttpRequest ,它有其他職責。 它只需要 output。在生產中,該數據將來自您的真實 class,並且它將使用HttpRequest 對於測試,您可以簡單地將實現替換為可以生成適合您的測試的數據的東西。 說得通?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM