.NET Core에서 권한 부여로 API 통합 테스트 설정
언급된 패키지와 함께 XUnit을 사용했습니다. 제 생각에는 XUnit이 제공하는 ClassFixtures 및 Collections로 인해 가장 잘 작동합니다.
통합 테스트를 위한 환경 설정
이전 섹션에서 언급했듯이 저는 XUnit 프레임워크를 사용하고 있습니다. TestFixtures를 만들 수 있습니다.
테스트 설비는 세트에 대해 다른 종류를 원할 때 유용합니다. 예를 들면 다음과 같습니다.
인증되지 않은 사용자를 사용한 테스트
인증된 사용자를 사용한 테스트
특정 리소스에 대한 권한이 없는 사용자를 사용하여 테스트
다중 테넌시 메커니즘을 확인하는 테스트
등등.
`
공개 클래스 TestFixture : IClassFixture>
{
보호된 읽기 전용 WebApplicationFactory Factory;
보호된 HttpClient 클라이언트;
public TestFixture(WebApplicationFactory<Startup> factory)
{
Factory = factory;
SetupClient();
}
protected static HttpContent ConvertToHttpContent<T>(T data)
{
var jsonQuery = JsonConvert.SerializeObject(data);
HttpContent httpContent = new StringContent(jsonQuery, Encoding.UTF8);
httpContent.Headers.Remove("content-type");
httpContent.Headers.Add("content-type", "application/json; charset=utf-8");
return httpContent;
}
private void SetupClient()
{
Client = Factory.WithWebHostBuilder(builder =>
{
/* I am telling builder to use appsettings.Integration,
that is correctly set up in my DevOps pipeline */
builder.UseEnvironment("Integration");
var configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.Integration.json")
.Build();
builder.ConfigureTestServices(services =>
{
/* setup whatever services you need to override,
its useful for overriding db context if you're using Entity Framework */
var dbConnectionString = configuration.GetSection("ConnectionStrings")["TheConnectionString"];
services.AddDbContext<DbContext>(optionsBuilder =>
{
optionsBuilder.UseSqlServer(dbConnectionString);
});
})
.CreateClient(new WebApplicationFactoryClientOptions
{
AllowAutoRedirect = false
});
}
`
고정 장치는 IClassFixture를 구현합니다. 이를 통해 다음을 수행할 수 있습니다.
DbContext의 연결 문자열 변경과 같은 서비스 구성 수정(통합 테스트에 유용할 수 있음)
비밀 관리에 사용하는 경우 Azure KeyVault와 같은 일부 다른 서비스 재정의
TestServer 설정(WebApplicationFactory와 함께 제공됨)
http 클라이언트 생성
데이터를 json으로 직렬화하고 필요한 헤더를 추가하는 메소드도 포함했습니다.
내 통합 테스트에서 REST API가 예상대로 작동하는지 확인하기 때문에 도움이 됩니다.
https://lukaszcoding.com/2020/04/integration-testing-in-net-core/에서 더 읽어보기
Reference
이 문제에 관하여(.NET Core에서 권한 부여로 API 통합 테스트 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lukaszreszke/setting-up-api-integration-tests-with-authorization-in-net-core-3c9c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)