나는 웹 API 컨트롤러에 대한 HttpContext를 모의하려고하고 moq를 사용하고 있으며 인터넷 검색 후 웹 API 컨트롤러에 관한 관련 게시물을 얻지 못 했으므로 저를 도와주세요.
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var response = new Mock<HttpResponseBase>();
var session = new Mock<HttpSessionStateBase>();
var server = new Mock<HttpServerUtilityBase>();
context.Setup(c => c.Request).Returns(request.Object);
context.Setup(c => c.Response).Returns(response.Object);
context.Setup(c => c.Session).Returns(session.Object);
context.Setup(c => c.Server).Returns(server.Object);
return context.Object;
이 방식은 MVC에서는 작동하지만 웹 API에서는 작동하지 않습니다. HttpContextBase를 MVC의 ControllerContext에 전달할 수 있지만 Web API에서는 전달할 수 없기 때문입니다.
이것에 대해 어떻게 생각합니까?
public interface IHttpContext
{
string Url { get; }
}
public class HttpContextProvider : IHttpContext
{
public string Url => HttpContext.Current.Request.Url.ToString();
}
public class MockedHttpContextProvider : IHttpContext
{
public string Url => "https://google.com";
}
HttpContext를 애플리케이션 깊숙이 전달해서는 안된다는 데 동의하지만 이전 코드를 리팩토링하고 이미 트리 아래로 먼 길을 통과 한 경우 아래가 새 코드에 대한 단위 테스트를 작성하는 좋은 방법이 아니라 다른 사람들의 물건을 만져야합니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다