2017-08-04 28 views
1

我有一個ASP.Net核心1.1項目使用ServiceStack核心。我試圖寫一個基本的集成測試,看起來像這樣:與ASPNetCore和ServiceStack集成測試

[TestFixture] 
public class BasicStartupTest 
{ 
    TestServer Server; 
    HttpClient Client; 
    const string BASE_URL = "http://localhost:57893"; 
    [OneTimeSetUp] 
    public void OneTimeSetup() 
    { 
     Server = new TestServer(new WebHostBuilder().UseStartup<Startup>()); 
     Client = Server.CreateClient(); 
    } 

    [OneTimeTearDown] 
    public void OneTimeTearDown() 
    { 
     Server.Dispose(); 
    } 

    [Test] 
    public async Task ShouldHitHealthEndpointAndReturn200() 
    { 
     var response = await Client.GetAsync("/health"); 
     response.EnsureSuccessStatusCode(); 
    } 
} 

問題是,當它試圖從客戶端運行實例的GetAsync功能,我碰到下面的堆棧跟蹤:

Result StackTrace: at ServiceStack.Host.NetCore.NetCoreRequest.get_UserHostAddress() in C:\TeamCity\buildAgent\work\a61371dd01fad6bd\src\ServiceStack\Host\NetCore\NetCoreRequest.cs:line 215 
    at ServiceStack.HttpRequestExtensions.GetAttributes(IRequest request) in C:\TeamCity\buildAgent\work\a61371dd01fad6bd\src\ServiceStack\HttpRequestExtensions.cs:line 844 
    at ServiceStack.AppHostBase.ProcessRequest(HttpContext context, Func`1 next) in C:\TeamCity\buildAgent\work\a61371dd01fad6bd\src\ServiceStack\AppHostBase.NetCore.cs:line 113 
    at Microsoft.AspNetCore.Hosting.Internal.RequestServicesContainerMiddleware.<Invoke>d__3.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 

它繼續,但是當我嘗試在集成測試中調用端點時,它看起來像ServiceStack中的某個get_UserHostAddress函數存在問題。

如何解決此錯誤?

回答

1

將一個proper Integration Test與啓用了真正的自主機HTTP服務器一起使用,對於.NET Core,AppSelfHostBase類可在ServiceStack.Kestrel NuGet包中使用。