On Thu, Sep 15, 2011 at 5:05 AM, Rob Aldred <r...@stardotstar.com> wrote:
> Thanks Justin, > That isnt working... its erroring with: > > The method `delete` was not stubbed or was already unstubbed > Woops, you're using expectations, not stubs. Try `File.rspec_reset` > > -- > Rob Aldred > > Software Developer > r...@stardotstar.com > twitter: stardotstar > > 47 Newton Street, Manchester, M1 1FT > T: +44 (0) 161 236 9740 > ___________________________________________________ > > This email and any files or ideas transmitted within it are sent in > confidence and are intended solely for the use of the individual or > entity to whom they are addressed. If you have received this email > in error please notify the system manager at i...@stardotstar.com > > On Thursday, 15 September 2011 at 01:52, Justin Ko wrote: > > > > > > > On Wed, Sep 14, 2011 at 6:51 AM, Rob Aldred <r...@stardotstar.com(mailto: > 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 (mailto:rspec-users@rubyforge.org) > > > http://rubyforge.org/mailman/listinfo/rspec-users > > > > Give `File.unstub(:delete)` in your `after` block. > > > > Attachments: > > - ATT00001..txt > > > > > > _______________________________________________ > rspec-users mailing list > rspec-users@rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users