【问题标题】:C# - Set URL of request of controller for unit testsC# - 为单元测试设置控制器请求的 URL
【发布时间】:2020-05-09 15:30:22
【问题描述】:

我正在编写一个单元测试,我需要设置传入请求的 URL,以便评估控制器方法中的 URL。我正在使用 FakeItEasy 和 NUnit3。

这里是被测代码和相关部分:

[HttpPost]
public async Task<IActionResult> Login(LoginViewModel loginViewModel)
{
...
   var queryString = Uri.UnescapeDataString(Request.Query["returnUrl"]);
...
}

我想将 queryString 设置为我在单元测试中指定的值。有人可以帮我提供示例代码吗?被测系统是控制器。我似乎只能找到起订量相关的代码。看起来很简单。

【问题讨论】:

  • 我想您可以通过 HttpContext 设置请求查询的所需值。 This 问答可能正是您想要的。

标签: c# unit-testing controller nunit-3.0 fakeiteasy


【解决方案1】:

您可以像这样将参数绑定到查询字符串:

[HttpPost]
public async Task<IActionResult> Login(LoginViewModel loginViewModel, [FromQuery] string returnUrl)
{
}

在您的测试中,使用您想要的 returnUrl 值调用 Login 方法

【讨论】:

    【解决方案2】:

    无需使用 FakeItEasy 或 NUnit 即可解决此问题。这是解决我的问题的代码行:

    _accountController.Request.QueryString = new QueryString("?returnUrl=value");
    

    将“param=value”替换为测试所需的内容。

    【讨论】:

      猜你喜欢
      • 2011-08-23
      • 2016-03-02
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多