Microsoft Test Host를 사용하여 ASP.NET Core MVC 앱 테스트
9559 단어 dotnetcsharpaspnetcore
ASP.NET Core MVC 애플리케이션을 테스트하는 몇 가지 접근 방식이 있습니다. 가장 간단한 방법은 컨트롤러의 인스턴스를 만들고 테스트에서 해당 메서드를 호출하는 것입니다.
public class SomeControllerTests
{
[Test]
public async Task GetAll_ShouldReturnAll()
{
// Arrange
var service = new SomeService();
var controller = new SomeController(service);
// Act
var result = controller.GetAll();
// Assert
// TODO check result
}
}
그러나 이 접근 방식에는 몇 가지 문제가 있습니다.
이러한 문제는 Microsoft.AspNetCore.TestHost nuget을 사용하여 해결할 수 있습니다.
public class TestFixture
{
public HttpClient HttpClient { get; private set; }
public async Task Initialize()
{
var builder = new HostBuilder()
.ConfigureWebHost(webHost =>
{
webHost.UseTestServer();
webHost.UseStartup<Startup>();
ConfigureWebHost(webHost);
});
_host = await builder.StartAsync();
HttpClient = _host.GetTestClient();
}
private void ConfigureWebHost(IWebHostBuilder builder)
{
IConfigurationRoot configurationRoot = null;
builder.ConfigureAppConfiguration((context, conf) =>
{
conf.AddJsonFile("appsettings.json");
configurationRoot = conf.Build();
});
builder.ConfigureTestServices(services =>
{
// Here you can overwrite some services
});
}
}
요청 모델을 직렬화하는 데 도움이 되는 작은 클래스도 필요합니다.
public class JsonContent : ByteArrayContent
{
public JsonContent(object obj) : base(ConvertToBytes(obj))
{
Headers.ContentType = new MediaTypeHeaderValue("application/json");
}
private static byte[] ConvertToBytes(object obj)
{
var serialized = JsonConvert.SerializeObject(obj);
return Encoding.UTF8.GetBytes(serialized);
}
}
이제 테스트에서 가짜 http 호스트를 만들 수 있습니다.
public class SomeControllersTests
{
private TestFixture _sut;
[SetUp]
public async Task Setup()
{
_sut = new TestFixture();
await _sut.Initialize();
}
[Test]
public async Task GetAll_ShouldReturnAll()
{
// Act
var request = new SomeRequest
{
// Some request data
}
var response = await _sut.HttpClient.PostAsync($"some-route", new JsonContent(request));
// Assert
// TODO check response
}
}
또한 HttpClient로 조작하여 필요한 권한 부여를 추가할 수 있습니다.
GLHF
연결
Reference
이 문제에 관하여(Microsoft Test Host를 사용하여 ASP.NET Core MVC 앱 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/anton_ilin/testing-of-asp-net-core-mvc-apps-using-microsoft-test-host-50mh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)