Мой тест не пройден. Возвращенная коллекция, возвращенная методом GetFiles
, пуста, и я не знаю почему.
Вот мой класс :
public class FileNamesProvider : IFileNamesProvider
{
private readonly IDirectory _directoryWrapper;
private readonly IReadOnlyList<string> _fileNames;
public FileNamesProvider(IDirectory directoryWrapper)
{
_directoryWrapper = directoryWrapper;
var folder = GetFolderOfExecutingAssembly();
_fileNames = GetFileNamesFromPatternFilesFolder(folder);
}
public IReadOnlyList<string> GetFileNamesForPatternFiles() => _fileNames;
private string GetFolderOfExecutingAssembly() =>
new Uri(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? throw new InvalidOperationException()).LocalPath;
private IReadOnlyList<string> GetFileNamesFromPatternFilesFolder(string folder) => _directoryWrapper.GetFiles($"{folder}\\patterns", "*.txt");
}
И мой тест:
[TestFixture]
public class FileNamesProviderTests
{
private Mock<IDirectory> _fakeDirectoryWrapper;
[SetUp]
public void SetUp()
{
_fakeDirectoryWrapper = new Mock<IDirectory>();
}
[Test]
public void GetFileNamesForPatternFiles_ReturnsExpectedFileNamesInCorrectCollectionType()
{
//Arrange
var fileNamesProvider = new FileNamesProvider(_fakeDirectoryWrapper.Object);
_fakeDirectoryWrapper.Setup(_ => _.GetFiles(It.IsAny<string>(), It.IsAny<string>()))
.Returns(new[] { "a.txt", "b.txt" });
//Act
var result = fileNamesProvider.GetFileNamesForPatternFiles();
//Assert
Assert.AreEqual(new[] { "a.txt", "b.txt" }, result);
Assert.That(result.GetType() == typeof(IReadOnlyList<string>));
}
}
Вот оболочка :
public class DirectoryWrapper : IDirectory
{
public DirectoryWrapper()
{
}
public string[] GetFiles(string path, string searchPattern) => Directory.GetFiles(path, searchPattern);
}