I am still relatively new to unit testing. I have written a class in Ruby that takes a file, searches through that file for a given Regex pattern, replaces it, then saves the changes back to the file. I want to be able to write unit tests for this method, but I don’t know how I would go about doing that. Can somebody tell me how we unit test methods that deal with file i/o?
Share
Check out this How do I unit-test saving file to the disk?
Basically the idea is the same, the FileSystem is a dependency for your class. So introduce a Role/interface that can be mocked in your unit-tests (such that you have no dependency while unit-testing); the methods in the role should be all the stuff you need from the FileSystem –
Now you can use a mock to return a canned string array – your class can then process this array. In production code, the real implementation of the role would hit the filesystem to return the array of lines.