【发布时间】:2017-03-12 18:09:35
【问题描述】:
我的一些控制器操作调用此方法GenerateActionLink。
private string GenerateActionLink(string actionName, string token, string username)
{
string validationLink = null;
if (Request.Url != null)
{
var encodedToken = EncodedUrlParameter(token);
var url = Url.Action(actionName, "Register", new {Token = encodedToken, Username = username}, Request.Url.Scheme);
validationLink = url;
}
return validationLink;
}
这是为了生成一个验证链接,该链接将通过电子邮件发送。它完美地工作。我遇到的问题是在测试调用该方法的控制器操作时。网址为空。
我如何模拟它并在我的单元测试中使用模拟?
我正在使用Moq 和NUnit。
注意:我需要能够传入一个 actionName,这就是为什么我没有将 Request.Url 与我的参数值连接起来,因为 Request.Url 将始终具有请求来自的操作,通常不是我的操作想要在链接中,这就是我使用 Url.Action 生成操作链接的原因。
【问题讨论】:
-
模拟
UrlHelper并在安排测试时设置控制器的Url属性。模拟请求模拟控制器的 http 上下文并设置控制器上下文。
标签: asp.net-mvc unit-testing mocking nunit moq