1

在针对 ASP.Net Web API 控制器编写一些验收测试代码时,我硬编码了要发布的 URL(减去域和端口)。这让我感到不安;如果控制器或其参数之一被重命名,我的 URL 将变为无效,但 Intellisense/Resharper 不会捕获它。是否有一种方法可以为控制器生成适当的 URI?

示例:给定一个看起来像这样的控制器:

public class FooController : ApiController
{
    ...
    public HttpResponseMessage Get(string bar) { ... }
    public HttpResponseMessage Post(string bar) { ... }
    ...
}

假设我编写了一些看起来像这样的测试代码(概念性):

sendPOSTforJSONresponse(baseURL + "api/Foo?bar=" + bar);
...
sendGETforJSONresponse(baseURL + "api/Foo?bar=" + bar);

但我想做的是"api/Foo?bar="用类似GenerateURLForController(FooController).withParametersOfMethod(FooController.Get). 在标准的 ASP.Net Web API 库中有这样的方法吗?如果没有,我想我可以自己使用反射。

4

1 回答 1

2

有一个项目可以做到这一点:Hyperlinkr

语法是这样的:

var uri = linker.GetUri<FooController>(r => r.Get(<parameter values go here>));
于 2013-06-03T15:48:17.357 回答