我有这个功能和单元测试。
ProfileController代码
[TestMethod]
public void TestDetailsViewData()
{
var controller = new ProfileController(_Profile);
var result = controller.Edit(1) as ViewResult;
var profile = (VIEWMODELS.Customer.Profile)result.ViewData.Model;
Assert.AreEqual("Testor", profile.cardName);
}
单元测试代码
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Profile", new { id = 0 });
我想测试这个函数,这个函数将重定向到索引页面并返回带有数据的ViewPage。但问题是当我运行这个单元测试代码时,我在这一行得到了Null异常,因为Request是NULL
[TestMethod]
public void TestDetailsViewData()
{
var request = new Mock<HttpRequestBase>();
request.SetupGet(x => x.Headers).Returns(
new System.Net.WebHeaderCollection {
{"X-Requested-With", "XMLHttpRequest"}
});
var context = new Mock<HttpContextBase>();
context.SetupGet(x => x.Request).Returns(request.Object);
//context.SetupGet(x => x.Request.RequestContext ).Returns(request.Object.RequestContext);
var controller = new ProfileController(_Profile);
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
controller.Request.RequestContext = context.Object.Request.RequestContext;
var result = controller.Edit(1) as ViewResult;
var profile = (VIEWMODELS.Customer.Profile)result.ViewData.Model;
Assert.AreEqual("testor", profile.cardName);
}
所以我可以知道如何测试这个?
更新了Moq功能 在进一步阅读并从here获得一些示例代码后,似乎请求能够填充值,但现在RequestContext为NULL,任何人都可以指向我正确的位置供我学习?
</p>
答案 0 :(得分:0)
发生错误是因为请求未在Test方法中定义。我认为你必须使用visual studio fakes。