【发布时间】:2014-06-16 07:26:36
【问题描述】:
我想在我的单元测试类中模拟(按起订量)多个 QueryString。 下面是一段代码:-
Adapter.MockQueryString("qs1", "1", _productController);
Adapter.MockQueryString("qs2", "1", _productController);
下面是我的适配器类的静态函数:-
public static void MockQueryString(string querystringKey, string querystringValue, Controller controller)
{
var queryString1 = new NameValueCollection();
queryString1.Add(querystringKey, querystringValue);
// Set up a request
var request = new Mock<System.Web.HttpRequestBase>();
request.Setup(r => r.QueryString).Returns(queryString1);
// Inject into the controller
var controllerBase = new Mock<ControllerBase>();
var contextBase = new Mock<System.Web.HttpContextBase>();
contextBase.Setup(c => c.Request).Returns(request.Object);
request.Setup(r => r.QueryString).Returns(queryString1);
var controllerContext = new ControllerContext(contextBase.Object, new System.Web.Routing.RouteData(), controllerBase.Object);
controller.ControllerContext = controllerContext;
}
问题是它唯一模拟了最后一个查询字符串(qs2)。并且为 qs1 赋予 null。我们如何模拟多个查询字符串?
【问题讨论】:
标签: c# unit-testing mocking moq request.querystring