C#: ForbidAsync와 같은 HttpContext 메서드를 조롱하는 방법은 무엇입니까?

3781 단어 csharphttpcontextmock
단위 테스트를 작성할 때 ForbidAsync, SignInAsync 등과 같은 "HttpContext"메서드를 모의해야 합니다.

이러한 메서드는 확장 메서드이므로 실제로 어떤 메서드를 조롱할지 알아야 합니다.

단위 테스트



이것은 "ForbidAsync"를 테스트하는 데 사용하는 코드입니다.

Mock<IAuthenticationService> mockedIAuthenticationService = new();
mockedIAuthenticationService
    .Setup(x => x.ForbidAsync(It.IsAny<HttpContext>(), It.IsAny<string>(), It.IsAny<AuthenticationProperties>()))
    .Returns(Task.FromResult((object)true));
Mock<IServiceProvider> mockedIServiceProvider = new();
mockedIServiceProvider
    .Setup(x => x.GetService(typeof(IAuthenticationService)))
    .Returns(mockedIAuthenticationService.Object);
Mock<HttpContext> mockedHttpContext = new Mock<HttpContext>();
mockedHttpContext.Setup(x => x.RequestServices).Returns(mockedIServiceProvider.Object);


그거 어디서 났어?



AuthenticationHttpContextExtensionscontext.RequestServices.GetService<IAuthenticationService>()를 통해 얻은 IAuthenticationService에서 가져온 것임을 나타냅니다.

따라서 IServiceProvider와 IServiceProvider를 조롱하기만 하면 됩니다.

이것이 나중에 다시 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기