我正在写一个单元测试,在这个测试中,我需要设置传入请求的URL,以便在控制器的方法中评估URL。 我使用的是FakeItEasy和NUnit3。
下面是被测试的代码和相关部分。
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel loginViewModel)
{
...
var queryString = Uri.UnescapeDataString(Request.Query["returnUrl"]);
...
}
我想把queryString设置为我在单元测试中指定的值。 谁能帮我举个例子代码? 被测系统是控制器。 我似乎只能找到Moq相关的代码。看起来很简单。
你可以像这样给查询字符串绑定一个参数。
[HttpPost]
public async Task<IActionResult> Login(LoginViewModel loginViewModel, [FromQuery] string returnUrl)
{
}
然后在你的测试中,调用 Login
方法,并将你想要的值添加到 returnUrl
不需要使用FakeItEasy或NUnit来解决这个问题。 下面是解决我的问题的代码行。
_accountController.Request.QueryString = new QueryString("?returnUrl=value");
将 "param=value "替换成测试所需的内容。