gpt4 book ai didi

c# - 单元测试 Asp.Net WebApi : how to test correct routing of a method with [FromUri] parameters

转载 作者:可可西里 更新时间:2023-11-01 03:02:11 27 4
gpt4 key购买 nike

我想测试这个 Controller :

[HttpGet]
public IList<Notification> GetNotificationsByCustomerAndId([FromUri] string[] name, [FromUri] int[] lastNotificationID)
{
return _storage.GetNotifications(name, lastNotificationID, _topX);
}

特别是,在此方法中,我想测试传入输入以形成请求 Url 的数组是否与进入 routeData.Values 的数组相同。如果对于单值参数(不是数组)它有效,但不适用于数组。如果我调试 Values,我只会看到 controlleraction

[TestMethod]
public void GetNotificationsByCustomerAndId_ArrayOverload_Should_Match_InputParameter_name()
{
string[] _testName = new string[] { _testCustomer, _testCustomerBis };

string Url = string.Format(
"http://www.testpincopallo.it/Notifications/GetByCustomerAndLastID/customersNotificationsInfos?name={0}&name={1}&lastNotificationID={2}&lastNotificationID={3}",
_testName[0], _testName[1],
_testNotificationID, _testNotificationIDBis);

IHttpRouteData routeData = GetRouteData(Url);
routeData.Values["name"].Should().Be(_testName);
}

在传递数组时是否有其他方法进行单元测试?

最佳答案

也许你可以使用 List<string>而不是 string[]this answer

此外,您可能需要输入 name[]而不是 name在查询字符串中。

编辑
对此进行调查后,我想知道在 GetRouteData 期间是否未完成非简单类型的模型绑定(bind)。 call——毕竟,路由不考虑这些类型,你不能创建两条不同的路由,例如。传递的数组中的元素数。

所以你应该研究模型绑定(bind)而不是请求路由。要在不实际执行调用的情况下测试您的代码,您可以检索 ModelBinder手动对象并使用它来解析 URL。 This test from the ASP.NET source code might be relevant for you.

关于c# - 单元测试 Asp.Net WebApi : how to test correct routing of a method with [FromUri] parameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34038494/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com