단위 테스트 클래스에서 여러 개의 QueryString을 모의 (moq으로)하고 싶습니다. 아래는 코드의 조각이다 : - 아래여러 쿼리 문자열 모의 방법?
Adapter.MockQueryString("qs1", "1", _productController);
Adapter.MockQueryString("qs2", "1", _productController);
하고 어댑터 클래스 내 정적 기능 : -
public static void MockQueryString(string querystringKey, string querystringValue, Controller controller)
{
var queryString1 = new NameValueCollection();
queryString1.Add(querystringKey, querystringValue);
// Set up a request
var request = new Mock<System.Web.HttpRequestBase>();
request.Setup(r => r.QueryString).Returns(queryString1);
// Inject into the controller
var controllerBase = new Mock<ControllerBase>();
var contextBase = new Mock<System.Web.HttpContextBase>();
contextBase.Setup(c => c.Request).Returns(request.Object);
request.Setup(r => r.QueryString).Returns(queryString1);
var controllerContext = new ControllerContext(contextBase.Object, new System.Web.Routing.RouteData(), controllerBase.Object);
controller.ControllerContext = controllerContext;
}
문제는 마지막 쿼리 문자열을 조롱 (qs2)입니다 . 그리고 qs1.now에 null을주는 우리는 여러 개의 쿼리 문자열을 조롱 할 수 있습니까?
SturartLC @
는
MockQueryString
의NameValueCollection
외부를 구축하고 한 번만 속성 반환 값을 설정할 수 있도록, 그에 전달합니다을 다음 번
MockQueryStrings
를 호출 전체 과정? – Pawan나는 요구 사항의 100 %가 아니지만, 위의 방법을 사용하면 Mock에서 SUT로 반환되는 N 값을 미리 설정할 수 있습니다. 'SetupSequence'는'QueryString'에 대한 몇가지 호출로 간단한 유닛 테스트에서 가장 잘 작동 할 것입니다. 그러나 당신이 설정을위한 프레임 워크를 추상화 한 것처럼 보이기 때문에, 순차적으로 각각의 값 콜렉션을 반환하는 일반적인 의미를 원할 수 있습니다. 후속 통화. 이전 설정 오류에 유의하십시오 -> QueryString은 속성이 아니라 메서드입니다. – StuartLC