1

我正在我的 Web api 控制器上的 Visual Studio 中进行一些自动化集成测试。我的测试中有以下代码:

var url = serverAddress + "/api/PostalCodes?postalCode=" + postalCodeToFind;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("accept", "application/json");
HttpResponseMessage response = client.GetAsync(url).Result;
response.EnsureSuccessStatusCode();

我收到以下错误:

System.Net.Http.HttpRequestException:响应状态码不表示成功:404(未找到)。

使用的 selfhost 服务器:

private const string serverAddress = "http://localhost:8080";

        [TestInitialize]
        public void Initialize()
        {
            config = new HttpSelfHostConfiguration(serverAddress);

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            config.MaxReceivedMessageSize = 2024 * 2024;
            config.MaxBufferSize = 2024 * 2024;

            server = new HttpSelfHostServer(config);
            server.OpenAsync().Wait();
        }

奇怪的是,如果我在 IIS 中有我的 web api 控制器,相同的 URL 将正常工作并返回一个值。我也有相同的 url 做一个帖子(没有 postalCodeToFind 查询参数),它也很好用......

有什么线索吗?

4

1 回答 1

0

控制器没有被测试加载。

您是否有自定义解析器,或者您是否希望烘焙的解析器将其拾取?

如果您使用自定义解析器(即从 DefaultAssembliesResolver 继承),请确保正在加载包含控制器的库。

如果您希望内置的解析器能够获取它,则包含您的控制器的库需要位于运行测试的目录中。

于 2013-09-24T13:29:07.287 回答