【发布时间】:2019-03-25 09:26:59
【问题描述】:
我使用System.IO.Abstractions (https://github.com/System-IO-Abstractions) 允许我将IFileSystem 注入我的班级。我最近添加了一段代码来捕获当用户尝试在他们没有写入权限的目录中创建文件时抛出的UnauthorizedAccessException。
有没有办法在System.IO.Abstractions中设置目录的访问权限?
下面的代码和我来的一样接近(MockFileSystem 来自System.IO.Abstractions)。 AccessControlSections 描述是
指定要保存或加载安全描述符的哪些部分
所以看来我需要设置某种安全描述符,但我找不到任何相关信息 - 或者这是否是正确的方法。
var mockFileSystem = new MockFileSystem();
mockFileSystem.Directory.CreateDirectory("C:\\Test", new DirectorySecurity("C:\\Test", AccessControlSections.None));
// This should throw an UnauthorizedAccessException
mockFileSystem.File.Create("C:\\Test\\File.txt");
【问题讨论】:
-
看起来
Directory.SetAccessControl是 BCL 中Directory.SetAccessControl的包装,所以只需遵循那些 MSDN 文档? -
这个库看起来付出了很多努力却收效甚微
-
@MichaelRandall 这是一个巨大的收获,我可以测试我的整个应用程序,而无需依赖构建/测试机器上实际存在的任何文件。我还可以围绕文件系统状态编写测试,因为我可以将它注入到我的类中。
-
@TheGeneral,让你的代码可测试一点收获吗?
标签: c# testing filesystems