On 27 Feb 2009, at 17:08, Marcus Roberts wrote:
>Unless RSpec is doing some magic under the hood that I'm not aware
of,
>this is expected behavior - you're reassigning the constant value of
>MachineInstance.
>What you really want to do is mock/stub directly on
MacineInstance. e.g.
>MachineInstance.should_receive(:create).and_return @mock_machine
If we did that, would that stub/mock carry over into other spec
files run later by autospec, which is what we're seeing.
I can see we're changing the definition of MachineInstance in the
spec we do that in, but should that carry over to later specs?
That's the way Ruby behaves, yes.
Once you assign the constant MachineInstance to point to your mock,
Rails' magic auto-file-loading which normally happens when Ruby fires
a 'missing constant error' will never run, so your real class will
never get loaded.
Assigning constants in your tests is a pretty bad idea unless you know
exactly what you're doing.
Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users