Я попробовал что-то подобное и потерпел неудачу:
const string path = @"C:\temp\incoming";
var fileSystem = new MockFileSystem();
fileSystem.AddDirectory(path);
var diFactory = fileSystem.DirectoryInfo;
var directoryInfo = diFactory.FromDirectoryName(path);
var directorySecurity = directoryInfo.GetAccessControl();
var currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
directorySecurity.AddAccessRule(new FileSystemAccessRule(currentUser , FileSystemRights.Read, AccessControlType.Allow));
Я все еще думаю, что это более или менее правильный путь, к сожалению, он не работает: - (
Может быть,Пользователь, которого я указываю для AccessRule, не верный, я пробовал и с другими, но безрезультатно:
var adminUser = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
// -> Doesn't work either..
В любом случае, в конце концов, я создал этот грязный обходной путь для его тестирования, и этоработает очевидно:
var mockFileSystem = new Mock<IFileSystem>();
mockFileSystem.Setup(x => x.File.Create(It.IsAny<string>())).Throws(new Exception());