Unit testing for Server.MapPath

后端 未结 3 1762
暖寄归人
暖寄归人 2020-12-01 13:31

I\'ve a method. which retrieve a document from hard disk. I can\'t test this from unit testing. It always throw an exception invalid null path or something. How to test that

3条回答
  •  温柔的废话
    2020-12-01 13:40

    You can use dependancy injection and abstraction over Server.MapPath

    public interface IPathProvider
    {
       string MapPath(string path);
    }
    

    And production implementation would be:

    public class ServerPathProvider : IPathProvider
    {
         public string MapPath(string path)
         {
              return HttpContext.Current.Server.MapPath(path);
         }
    }
    

    While testing one:

    public class TestPathProvider : IPathProvider
    {
        public string MapPath(string path)
        {
            return Path.Combine(@"C:\project\",path);
        }
    }
    

提交回复
热议问题