Asp.net web api 集成测试-WebApi-内存中托管返回404错误

Asp.net web api 集成测试-WebApi-内存中托管返回404错误,asp.net-web-api,integration-testing,Asp.net Web Api,Integration Testing,我们正在创建一个web api,我正在尝试为web api设置集成测试,所以我们不必使用PostMan来验证它是否工作 当我运行webapi并使用PostMan时,我得到了预期的结果。然而,当我尝试使用内存托管并运行webapi进行集成测试时,它总是返回404 使用XUnit-下面是测试类 public class UnitTest1 { private readonly TestServer _server; private readonly HttpClient _c

我们正在创建一个web api,我正在尝试为web api设置集成测试,所以我们不必使用PostMan来验证它是否工作

当我运行webapi并使用PostMan时,我得到了预期的结果。然而,当我尝试使用内存托管并运行webapi进行集成测试时,它总是返回404

使用XUnit-下面是测试类

    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);
    }
}

我必须在启动时添加configure方法,否则在初始化类时测试将失败

您可以尝试以下方法:

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

    WebApiConfig.Register(config); // If Needed
     FilterConfig.RegisterGlobalFilters(GlobalConfiguration.Configuration.Filters); // If Needed
如果需要更多详细信息,您可以在此处找到:

您可以尝试以下方法:

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

    WebApiConfig.Register(config); // If Needed
     FilterConfig.RegisterGlobalFilters(GlobalConfiguration.Configuration.Filters); // If Needed
如果需要更多详细信息,您可以在此处找到: