Skip to content

Commit a091ac7

Browse files
authored
refactor: improve mocking tests in FileSystemTests (#1456)
Refactors `FileSystemTests` to more directly validate mocked `IFile` behavior, and updates test dependencies to support the new assertion/verification style. **Changes:** - Update `Mock_File_Succeeds` to assert `ReadAllText` returns a configured value and verify the call occurred. - Add `aweXpect.Mockolate` to the shared test package references. - Bump `Mockolate` package version and centrally define the `aweXpect.Mockolate` version.
1 parent 16aa745 commit a091ac7

File tree

3 files changed

+23
-19
lines changed

3 files changed

+23
-19
lines changed

Directory.Packages.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@
2222
<PackageVersion Include="coverlet.collector" Version="8.0.1" />
2323
<PackageVersion Include="GitHubActionsTestLogger" Version="3.0.1" />
2424
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.3.0" />
25-
<PackageVersion Include="Mockolate" Version="2.0.2" />
25+
<PackageVersion Include="Mockolate" Version="2.4.0" />
2626
<PackageVersion Include="NUnit" Version="4.5.1" />
2727
<PackageVersion Include="NUnit.Analyzers" Version="4.12.0" />
2828
<PackageVersion Include="NUnit3TestAdapter" Version="6.1.0" />
2929
<PackageVersion Include="PublicApiGenerator" Version="11.5.4"/>
3030
<PackageVersion Include="aweXpect" Version="2.31.0"/>
3131
<PackageVersion Include="aweXpect.Testably" Version="0.13.0"/>
32+
<PackageVersion Include="aweXpect.Mockolate" Version="2.3.0"/>
3233
</ItemGroup>
3334
<ItemGroup>
3435
<PackageVersion Include="Nuke.Common" Version="10.1.0"/>

tests/Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<PackageReference Include="NUnit3TestAdapter" />
2828
<PackageReference Include="aweXpect"/>
2929
<PackageReference Include="aweXpect.Testably"/>
30+
<PackageReference Include="aweXpect.Mockolate"/>
3031
</ItemGroup>
3132

3233
<PropertyGroup>

tests/TestableIO.System.IO.Abstractions.Wrappers.Tests/FileSystemTests.cs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,88 +26,90 @@ await That(memoryStream).HasLength().GreaterThan(0)
2626
[Test]
2727
public async Task Mock_File_Succeeds()
2828
{
29-
var fileSystemMock = IFileSystem.CreateMock(fs =>
29+
var fileSystem = IFileSystem.CreateMock(fs =>
3030
fs.File.InitializeWith(IFile.CreateMock()));
31+
fileSystem.File.Mock.Setup.ReadAllText(It.IsAny<string>()).Returns("foo");
3132

32-
await That(() =>
33-
fileSystemMock.File.Mock.Setup.ReadAllText(It.IsAny<string>()).Returns("")
34-
).DoesNotThrow();
33+
var result = fileSystem.File.ReadAllText("any path");
34+
35+
await That(result).IsEqualTo("foo");
36+
await That(fileSystem.File.Mock.Verify.ReadAllText(It.Is("any path"))).Once();
3537
}
3638

3739
[Test]
3840
public async Task Mock_Directory_Succeeds()
3941
{
40-
var fileSystemMock = IFileSystem.CreateMock(fs =>
42+
var fileSystem = IFileSystem.CreateMock(fs =>
4143
fs.Directory.InitializeWith(IDirectory.CreateMock()));
4244

4345
await That(() =>
44-
fileSystemMock.Directory.Mock.Setup.CreateDirectory(It.IsAny<string>())
46+
fileSystem.Directory.Mock.Setup.CreateDirectory(It.IsAny<string>())
4547
).DoesNotThrow();
4648
}
4749

4850
[Test]
4951
public async Task Mock_FileInfo_Succeeds()
5052
{
51-
var fileSystemMock = IFileSystem.CreateMock(fs =>
53+
var fileSystem = IFileSystem.CreateMock(fs =>
5254
fs.FileInfo.InitializeWith(IFileInfoFactory.CreateMock()));
5355

5456
await That(() =>
55-
fileSystemMock.FileInfo.Mock.Setup.New(It.IsAny<string>())
57+
fileSystem.FileInfo.Mock.Setup.New(It.IsAny<string>())
5658
).DoesNotThrow();
5759
}
5860

5961
[Test]
6062
public async Task Mock_FileStream_Succeeds()
6163
{
62-
var fileSystemMock = IFileSystem.CreateMock(fs =>
64+
var fileSystem = IFileSystem.CreateMock(fs =>
6365
fs.FileStream.InitializeWith(IFileStreamFactory.CreateMock()));
6466

6567
await That(() =>
66-
fileSystemMock.FileStream.Mock.Setup.New(It.IsAny<string>(), It.IsAny<FileMode>())
68+
fileSystem.FileStream.Mock.Setup.New(It.IsAny<string>(), It.IsAny<FileMode>())
6769
).DoesNotThrow();
6870
}
6971

7072
[Test]
7173
public async Task Mock_Path_Succeeds()
7274
{
73-
var fileSystemMock = IFileSystem.CreateMock(fs =>
75+
var fileSystem = IFileSystem.CreateMock(fs =>
7476
fs.Path.InitializeWith(IPath.CreateMock()));
7577

7678
await That(() =>
77-
fileSystemMock.Path.Mock.Setup.Combine(It.IsAny<string>(), It.IsAny<string>())
79+
fileSystem.Path.Mock.Setup.Combine(It.IsAny<string>(), It.IsAny<string>())
7880
).DoesNotThrow();
7981
}
8082

8183
[Test]
8284
public async Task Mock_DirectoryInfo_Succeeds()
8385
{
84-
var fileSystemMock = IFileSystem.CreateMock(fs =>
86+
var fileSystem = IFileSystem.CreateMock(fs =>
8587
fs.DirectoryInfo.InitializeWith(IDirectoryInfoFactory.CreateMock()));
8688

8789
await That(() =>
88-
fileSystemMock.DirectoryInfo.Mock.Setup.New(It.IsAny<string>())
90+
fileSystem.DirectoryInfo.Mock.Setup.New(It.IsAny<string>())
8991
).DoesNotThrow();
9092
}
9193

9294
[Test]
9395
public async Task Mock_DriveInfo_Succeeds()
9496
{
95-
var fileSystemMock = IFileSystem.CreateMock(fs =>
97+
var fileSystem = IFileSystem.CreateMock(fs =>
9698
fs.DriveInfo.InitializeWith(IDriveInfoFactory.CreateMock()));
9799

98100
await That(() =>
99-
fileSystemMock.DriveInfo.Mock.Setup.New(It.IsAny<string>())
101+
fileSystem.DriveInfo.Mock.Setup.New(It.IsAny<string>())
100102
).DoesNotThrow();
101103
}
102104

103105
[Test]
104106
public async Task Mock_FileSystemWatcher_Succeeds()
105107
{
106-
var fileSystemMock = IFileSystem.CreateMock(fs =>
108+
var fileSystem = IFileSystem.CreateMock(fs =>
107109
fs.FileSystemWatcher.InitializeWith(IFileSystemWatcherFactory.CreateMock()));
108110

109111
await That(() =>
110-
fileSystemMock.FileSystemWatcher.Mock.Setup.New(It.IsAny<string>())
112+
fileSystem.FileSystemWatcher.Mock.Setup.New(It.IsAny<string>())
111113
).DoesNotThrow();
112114
}
113115
}

0 commit comments

Comments
 (0)