On Fri, Jul 25, 2008 at 9:30 AM, Matt Lins <[EMAIL PROTECTED]> wrote:
> Yes, gist is great!
>
> Thank you very much for taking the time to look at this.  I like your
> suggestions very much and will use them.  At this point I'm just
> messing around, but I don't understand why this doesn't work.
>
> One more bad implementation if you have time:
>
> http://gist.github.com/2372
>
> I'm removing the constant after each spec runs and redefining it
> before each runs.  The second spec still doesn't pass though, even
> though the constant is defined before each spec.
>
> Again, I realize this is horrible, but it should still work, no?

I think you're right, there is something funky going on, and I *think*
it's something internal to RSpec.  Your code looks like it ought to
work, and it works in Mocha.  I've poked around a little bit, but
nothing jumped out at me.

That said, this is a pretty weird edge case and afaik has not affected
anything I've ever done.  I can tell you that this is an uber-low
priority, for me at least, so you'll either have to hope it piques
someone's curiosity enough to fix, or go ahead and work on a fix
yourself.

As you've pointed out, you can do
class MyModel; end
MyModel.stub!(:count).and_return 1
MyModel.stub!(:find).and_return [EMAIL PROTECTED]

I've just committed a small enhancement that lets you do
MyModel.stub!(:count => 1, :find => [EMAIL PROTECTED])

in order to cut down on the noise.

Download the latest source and build your gem and you're good to go.

Also, you can do as Scott suggested and use DI.  Then you'd be doing
something like
Migration.set_model MyModel

I agree though that this may not be desirable in some cases.  For
instance, if the constant name is represented as a string (such as in
a DB column) then you've now put the burden on client code to do the
string->constant conversion.

Pat
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to