On Wed, Sep 14, 2011 at 6:51 AM, Rob Aldred <r...@stardotstar.com> wrote:
> I'm speccing a small lib which manipulates image files using mini_magick. > The lib creates various temporary files during the process, the lib then > cleans up the temporary files at the end. > > I'm trying to mock expectations that the calls are made to File#delete > > Eg... > File.should_receive(:delete).once.with("#{generator.tmp_path}-full\.png") > File.should_receive(:delete).once.with("#{generator.tmp_path}-screen\.png") > File.should_receive(:delete).once.with("#{generator.tmp_path}-shadow\.png") > > The method in the lib that does this is: > > Class IconGenerator > ... > > private > > def cleanup > # remove temporary files created during > # image manipulation > ['-full','_screen','_shadow','_back_shadow'].each do |f| > File.delete "#{tmp_path}#{f}.png" if File.exists? "#{tmp_path}#{f}.png" > end > end > ... > end > > The expectations work fine, however, I also have an after block which also > calls File.delete to clean up the final version of the manipulated test > image > > after(:each) do > # cleanup manipulated image > File.delete out_dir.join('MenuIcon.png') if File.exists? > out_dir.join('MenuIcon.png') > end > > The File.delete call in the after block fails because its calling the > mocked version of File.delete > This results in the following error: > > Failure/Error: File.delete out_dir.join('MenuIcon.png') if File.exists? > out_dir.join('MenuIcon.png') > NoMethodError: > undefined method `=~' for > #<Pathname:/Users/robaldred/Sites/egg/tmp/MenuIcon.png> > > > My next step was to stub the write method for every instance of > MiniMagick::Image > However I will then no longer be able to test the cleanup because the > delete method will never be called if the files don't exist. > > I'm pretty sure I'm going about this the wrong way and making it difficult > for myself here. > Appreciate any help & feedback > > Thanks > -- > Rob > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users Give `File.unstub(:delete)` in your `after` block.
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users