How to mock application path when unit testing Web App

后端 未结 6 1353
囚心锁ツ
囚心锁ツ 2021-01-04 12:35

I am testing code in a MVC HTML helper that throws an error when trying to get the application path:

//appropriate code that uses System.IO.Path to get direc         


        
6条回答
  •  感情败类
    2021-01-04 13:06

    var request = new Mock(MockBehavior.Strict);
            var moqRequestContext = new Mock(MockBehavior.Strict);
            request.SetupGet(r => r.RequestContext).Returns(moqRequestContext.Object);
            var routeData = new RouteData();
            routeData.Values.Add("key1", "value1");
            moqRequestContext.Setup(r => r.RouteData).Returns(routeData);
    
            request.SetupGet(x => x.ApplicationPath).Returns(PathProvider.GetAbsolutePath(""));
    
    public interface IPathProvider
    {
        string GetAbsolutePath(string path);
    }
    
    public class PathProvider : IPathProvider
    {
         private readonly HttpServerUtilityBase _server;
    
         public PathProvider(HttpServerUtilityBase server)
         {
            _server = server;
         }
    
        public string GetAbsolutePath(string path)
        {
            return _server.MapPath(path);
        }
    }
    

提交回复
热议问题