Kos*_*123 4 .net c# testing xunit
在.net core 6中,startup.cs已被删除,我之前使用的集成测试不再按原样工作。我需要进行更新。
在我的 API (program.cs) 中,我添加了:
[assembly: InternalsVisibleTo("constructionCompanyAPI.IntegrationTests")]
Run Code Online (Sandbox Code Playgroud)
这是 Integration.Tests csproj:
我创建了一个 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 并返回代码 200。
所以每次测试失败时:
var response = await _client.GetAsync("/api/constructionCompany" + queryParams);
Run Code Online (Sandbox Code Playgroud)
响应总是收到 404 错误(未找到)。
Expected response.StatusCode to be HttpStatusCode.OK {value: 200}, but found HttpStatusCode.NotFound {value: 404}.
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能使其正常工作?
谢谢
编辑:整个program.cs文件:
我在方法中添加了“args”并且它起作用了
var builder = WebApplication.CreateBuilder(args);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |