ASP.NET Core 통합 테스트 소개
7185 단어 testingaspnetcorecsharpdotnet
"통합 테스트"라는 용어는 데이터 액세스 테스트 또는 파일 시스템 액세스와 같은 다른 경우도 포함합니다.
프로젝트 설정
일반적인 지침은 다음과 같은 방식으로 ASP.NET Core 프로젝트를 구성하는 것입니다.
.
├── src
│ └── MyProject.Api
│ └── Controllers
│ └── ValuesController
└── test
├── IntegrationTests
│ └── MyProject.Api.Test
│ └── ValuesControllerTest
└── UnitTests
TestHost NuGet 설치
.NET Core 테스트 프로젝트를 만든 다음
Microsoft.AspNetCore.TestHost
패키지를 설치합니다.이 패키지는
TestServer
를 구성하는 옵션을 제공합니다.> Install-Package Microsoft.AspNetCore.TestHost
기본 클래스 만들기
ControllerTest
클래스가 상속할 수 있는 기본 클래스를 만듭니다. 요청을 수행하는 데 사용되는 TestServer
및 HttpClient
를 설정합니다.[TestClass]
public abstract class IntegrationTestInitializer
{
protected HttpClient _client;
[TestInitialize]
public void Setup()
{
var builder = new WebHostBuilder()
.UseStartup<Startup>();
var server = new TestServer(builder);
_client = server.CreateClient();
}
}
ControllerTest 만들기
테스트하려는 컨트롤러가 다음과 같다고 가정해 보겠습니다.
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
}
기본 클래스가 설정되면 기본 클래스에서 간단하게 상속하고
_client
를 사용하여 API에 대한 요청을 수행할 수 있습니다.[TestClass]
public class ValuesControllerTest : IntegrationTestInitializer
{
[TestMethod]
public async Task CanGetValues()
{
List<string> expectedResponse = new List<string> { "value1", "value2" };
var responseJson = await _client.GetStringAsync("api/values");
List<string> actualResponse = JsonConvert.DeserializeObject<List<string>>(responseJson);
Assert.AreEqual(expectedResponse.Count, actualResponse.Count);
foreach(var expectedValue in expectedResponse)
{
Assert.IsTrue(actualResponse.Contains(expectedValue));
}
}
}
이 게시물에서는 매우 기본적인 ASP.NET Core API를 통합 테스트하는 방법을 설명했습니다.
실제로는 액세스해야 하는 API 뒤에 데이터베이스가 있을 수 있으며 일부 엔드포인트는 API 키 또는 JWT로 보호될 수도 있습니다.
그러나이 게시물은 통합 테스트에 대한 빠른 소개 역할만 해야 합니다.
kai-ostwald / 통합 테스트 샘플
통합 테스트 작성 방법을 보여주는 ASP.NET Core 샘플 프로젝트
통합테스트샘플
컨트롤러에 대한 통합 테스트 방법을 보여주는 ASP.NET Core 샘플 프로젝트
View on GitHub
Reference
이 문제에 관하여(ASP.NET Core 통합 테스트 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/kaos/introduction-to-asp-net-core-integration-testing-1e77
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(ASP.NET Core 통합 테스트 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaos/introduction-to-asp-net-core-integration-testing-1e77텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)