From: Ben Giddings Date: 2005-02-17T00:08:22+09:00 Subject: Re: [ANN] FileSystem 0.1.0: Beta for me, Alpha for you On Feb 16, 2005, at 09:39, Francis Hwang wrote: > To use it in live code, you call get methods on the FileSystem module: > > FileSystem.get_dir => Dir > FileSystem.get_file => File > FileSystem.get_file_utils => FileUtils > FileSystem.get_dir.entries( '.' ) => [ '.', '..', 'file1', ... ] > > (I'm thinking about adding a voodoo.rb file that actually re-assigns > the constants Dir, File, and FileUtils, though I suspect this will not > be that usable in many cases.) > > Then, to mock out that activity for a test code, simply call > FileSystem.mock= : > > FileSystem.mock = true > FileSystem.get_dir => FileSystem::DirAdapter > FileSystem.get_file => FileSystem::FileAdapter > FileSystem.get_file_utils => FileSystem::FileUtilsAdapter > FileSystem.get_dir.entries( '.' ) => [ '.', '..', ... ] Hi Francis, I like the idea, and the idea of mocking out things like filesystems is very important. Just a few comments on the naming of things: If the class is mainly just a test construct and/or a proxy for actual Filesystem calls, maybe "Test" or "Proxy" should be part of the class name. Secondly, method names that start with "get_" seem pretty un-rubyish. They feel more like Java getFoo() and setFoo() type functions. Maybe it would make sense to rename them just dir, file, file_utils and dir_entries? Ben P.S. If you ever decide to mock out a human being, let me know. This morning in the shower I was wondering how I can mock out the person who has to push a button on an embedded device I'm working on. Sure, I can easily mock out the register that pushing the button supposedly changes, but that kinda defeats the purpose of the test.