我试图测试路由到我的Controller的方法。我有以下的单元测试:测试控制器路由,如何使用HttpRequestMessage发布数据
[Test]
public void POST_PlaylistItem_Should_route_to_PlaylistItemController_Create_method()
{
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/PlaylistItem/");
var config = new HttpConfiguration();
WebApiConfig.Register(config);
var route = Helpers.RouteRequest(config, request);
route.Controller.Should().Be<PlaylistItemController>();
route.Action.Should().Be("Create");
}
我需要能够发布内容与消息让我的控制器可以使以下两个签名之间做出一个决定:
[HttpPost]
public PlaylistItemDto Create(PlaylistItemDto playlistItemDto)
[HttpPost]
public IEnumerable<PlaylistItemDto> CreateMultiple(List<PlaylistItemDto> playlistItemDtos)
我通过一些资源查找,我发现了一个使用async + HttpClient的示例,http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client#PostingResource,但我并不热衷于将我的示例与不熟悉的技术过于复杂化,直到我掌握了基本知识。使用HttpClient我无法轻松地向控制器发送消息/它的行为就像服务器没有运行一样。
的一点是,它不是控制器,这将“使两者之间做出一个决定。”它是ASP.NET Web API的路由基础结构。由于您只需配置(在App_Start中)Web API的路由,并且由于没有HTTP上下文或服务器体系结构,因此无法知道应该调用哪种方法 - 我要说的是您真正需要的是集成测试。 当我们想要测试路由是否正确发生时,我们只需将脚本(在wget或Selenium中)或HTTP请求发送到登台Web服务器。 –