Comments (4)
I think this is beyond the scope of TestingHelpers.MockFileSystem
. If you want to test specific interactions in an app, you should use IFileSystem
with something like Moq or NSubstitute. MockFileSystem
is just a helper for the 99% of cases to save you from having to mock out every last call manually. I'm worried that we're slowly growing the TestHelpers project into an entire in-memory file system.
from system.io.abstractions.
Well, once you had a list of file names and a pointer to their contents, it became an in-memory filesystem. The nice part is that Its a testable file system as well, since in theory, setting up these kinds of scenarios are what make for robust code.
We may have to specifically define what a basic filesystem is, or find a workable definition of it. I would guess that basic filesystem has out-of-space problems, since it has the job of allocating bytes on physical media that has finite space. I dont believe we have to keep track of blocks, but virtual sizes could be summed up and counted against a total size limit.
You could be right though... I believe that to the extent that as long as we dont introduce NTFS semantics into our code, we should be okay. For instance, I dont believe a basic filesystem would have ACLs. And quite possibly, filesystem locking (on the file level) wouldnt exist. Those would technically be mocked, and added to the mockfilesystem itself, since those are semantics associated with a more sophisticated filesystem.
I'm speaking out-of-turn in a sense, because I haven't seen the light on mocking frameworks... most examples I see is making a method in a test that returns exactly what you want, then turn around and test for it...
We should continue discussion.
from system.io.abstractions.
The Helpers are not technically Mocks. They are stubs and should be assumed to behave as such. Be aware that the behavior may not match the behavior expected based on experience with the real implementations. If you need something that is closer in behavior, build it out (and offer up a pull request to contribute back to the library).
Mocking frameworks are great ... :)
from system.io.abstractions.
Going to consider out of scope for now.
from system.io.abstractions.
Related Issues (20)
- Async options for all actions HOT 1
- IFile.Open(Read) cannot be mocked with NSubstitute anymore due to System.IO.Abstractions.FileSystemStream HOT 8
- MockFileSystem: IFile.GetLastWriteTimeUtc may return wrong last write time after calling IFileInfo.Open HOT 2
- BinaryFormatter becomes obsolete -> Remove it with .NET 8.0 HOT 2
- MockPath.GetFullPath does not match windows behavior. HOT 4
- IDirectoryInfoFactory.Wrap loses part of absolute path when used with MockFileSystem HOT 4
- PathVerifier fails on whitespace filename under Linux and .NET Core HOT 1
- Creating new MockFileInfo thinks file exists when it actually does not. HOT 3
- Microsoft Fakes does not generate Fakes namespace for System.IO.Abstractions interfaces HOT 1
- I want to step out of this project HOT 13
- Providing mocks as and when necessary HOT 4
- `FileSystemStream` Issues HOT 4
- Clearning the `Directory` flag causes a directory to be turned into a regular file HOT 1
- `FlushAsync` doesn't update file contents HOT 3
- FileStreamWrapper breaks patternmatching type testing HOT 5
- MockFileSystem.Directory.CreateDirectory should throw IOException if conflicting file exists HOT 2
- Signature missing in the dll HOT 8
- FileInfoFactory and DirectoryInfoFactory Wrap implementations don't match the interface for nullability HOT 2
- IFileSystemInfo.ResolveLinkTarget throws exception instead of returning null if the path is not a link HOT 3
- Creation of the default "temp" directory in MockFileSystem should have a toggle HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from system.io.abstractions.