1

번들을 액세스하는 ASP.NET MVC 액션 :단위 테스트 내 액션 메소드에서 다음 코드의

var bundleUrl = Scripts.Url("~/Scripts/MyBundle"); 

내가 시도하고 단위 테스트이 작업 방법, 내가받을 다음과 같은 오류/스택 추적 :

System.ArgumentNullException 
Value cannot be null. 
Parameter name: httpContext 
    at System.Web.HttpContextWrapper..ctor(HttpContext httpContext) 
    at System.Web.Optimization.Scripts.Url(String virtualPath) 

아이디어가 있으십니까?

나는 요구가 작성 될 때, 나는

내가 번들 설치해야합니까 등의 경로를 액세스 할 수 있습니다, 적절하게 HttpContext를 조롱했다?

System.Web.Optimization에 대한 소스 코드를보고 ILSpy를 사용 후에는 스크립트 클래스는 정적 HttpContext.Current 예에서 HttpContextWrapper를 생성 나타납니다

편집 (같은 난의 Global.asax에서 수행) (null입니다).

답변

1

Scripts 클래스는 정적 System.Web.HttpContext.Current 인스턴스를 사용하기 때문에 모의하기가 거의 불가능합니다.

그래서 나는 스크립트 용 래퍼 인터페이스를 작성한 다음 내 단위 테스트에서 조롱했습니다.

예컨대

var bundleUrl = Scripts ?? new ScriptsWrapper()..Url("~/Scripts/MyBundle"); 

단위 테스트 :

controller.Scripts = new Mock<IScripts>().Object;