我创建了 ASP.NET Web API 的自托管实现,并希望它在 SpecFlow 测试中运行。
因此,在我的规格中,我有一步启动 selfhostserver,如下所示:
var config = new HttpSelfHostConfiguration("http://localhost:9000");
var server = new HttpSelfHostServer(config);
_apiApplication.Start(); //IoC, route-configs etc.
server.OpenAsync().Wait();
var httpClient = new HttpClient();
var response = httpClient.GetAsync(fetchUrl).Result;
GetAsync 调用发生的异常:
Exception : System.AggregateException: One or more errors occurred.
---> System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a receive.
---> System.IO.IOException: Unable to read data from the transport connection
在规范完成之前,测试运行似乎阻止了对自托管 API 的任何调用。调试时,我可以调用 url - 但它会挂起,直到测试运行完成。完成后,它给出了很好的响应。
我还创建了一个控制台应用程序,它可以完美地运行此代码,并给出预期的结果。
任何拥有通过 HttpSelfHostServer 进行测试的 SpecFlow 测试套件的人,或者知道如何让自托管 WebApi 在 SpecFlow 套件中工作?