2017-06-02 4 views
0

Wir erstellen eine Web-API und ich versuche Integrationstests für die Web-API einzurichten, so dass wir PostMan nicht verwenden müssen, um zu überprüfen, ob es funktioniert.Integration Test - WebApi - im Speicher hosting zurückkehrenden 404 Fehler

Wenn ich das Webapi benutze und PostMan verwende, bekomme ich das erwartete Ergebnis. Wenn ich jedoch versuche, das Hosting im hapager zu verwenden und den Webapi für den Integrationstest auszuführen, gibt es immer 404 zurück.

Verwenden von XUnit - die Testklasse ist unten.

public class UnitTest1 
{ 
    private readonly TestServer _server; 
    private readonly HttpClient _client; 

    public UnitTest1() 
    { 
     var host = new WebHostBuilder() 
      .UseStartup<Startup>(); 

     this._server = new TestServer(host); 
     this._client = _server.CreateClient(); 
    } 

    [Fact] 
    public async void TestMethod1() 
    { 
     var response = await this._client.GetAsync("api/objects"); 
     response.EnsureSuccessStatusCode(); 

     var responseString = await response.Content.ReadAsStringAsync(); 

     List<obj> result = JsonConvert.DeserializeObject<IEnumerable<obj>>(responseString).ToList(); 

     Assert.Equal(3, result.Count); 
    } 
} 

Die Startklasse:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 
     // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=316888 

     GlobalConfiguration.Configure(WebApiConfig.Register); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
    } 

    public void Configure() 
    { 
     var config = new HttpConfiguration(); 
     WebApiConfig.Register(config); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
    } 
} 

ich die configure-Methode in dem Start hinzuzufügen hatte, sonst Test fehlschlagen würde, während die Klasse initialisiert wurde.

Antwort

0

können Sie versuchen, so etwas wie:

using (HttpConfiguration config = new HttpConfiguration()) 
{ 
    config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always; 

    WebApiConfig.Register(config); // If Needed 
    FilterConfig.RegisterGlobalFilters(GlobalConfiguration.Configuration.Filters); // If Needed 

Wenn weitere Informationen benötigen, können Sie hier finden: https://stackoverflow.com/a/49202654/2928038