小编Kos*_*123的帖子

对于 .net core 6 中的控制器调用,WebApplicationFactory 始终返回 404(未找到)

在.net core 6中,startup.cs已被删除,我之前使用的集成测试不再按原样工作。我需要进行更新。

在我的 API (program.cs) 中,我添加了:

[assembly: InternalsVisibleTo("constructionCompanyAPI.IntegrationTests")]
Run Code Online (Sandbox Code Playgroud)

这是 Integration.Tests csproj:

csprojImage

我创建了一个 ConstructionCompanyControllersTests.cs,如下所示:

public class ConstructionCompanyControllerTests
{
    private HttpClient _client;

    public ConstructionCompanyControllerTests()
    {
        _client = new WebApplicationFactory<Program>()
            .WithWebHostBuilder(builder =>
            {
                builder.ConfigureServices(services =>
                {
                    var dbContextOptions = services
                    .SingleOrDefault(service => service.ServiceType == typeof(DbContextOptions<ConstructionCompanyDbContext>));

                    services.Remove(dbContextOptions);

                    services.AddDbContext<ConstructionCompanyDbContext>(options => options.UseInMemoryDatabase("ConstructionCompanyDb"));
                });
            })
            .CreateClient();
    }
    [Theory]
    [InlineData("?pageNumber=1&pageSize=10")]
    [InlineData("?pageNumber=1&pageSize=5")]
    public async Task GetAll_WithQueryParameters_ReturnsOkResult(string queryParams)
    {
        // act

        var response = await _client.GetAsync("/api/constructionCompany" + queryParams);

        // assert

        response.StatusCode.Should().Be(System.Net.HttpStatusCode.OK);
    }
Run Code Online (Sandbox Code Playgroud)

当我启动 API 时,一切正常,我将在 Swagger 中看到我的控制器并调用 get …

.net c# testing xunit

4
推荐指数
1
解决办法
1298
查看次数

标签 统计

.net ×1

c# ×1

testing ×1

xunit ×1