[英]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.