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