[rspec-users] RSpec 2 view specs: partial mocks

David Chelimsky dchelimsky at gmail.com
Tue Jun 22 11:06:43 EDT 2010


On Jun 22, 2010, at 9:58 AM, Michael Schuerig wrote:

> On Tuesday 22 June 2010, David Chelimsky wrote:
>> On Jun 22, 2010, at 8:27 AM, Michael Schuerig wrote:
> 
>>> #_view (and #view in turn) creates just one ActionView::Base
>>> instance the first time it is called. That's as it is intended.
>>> The effect is, however, that only assigns up to that point are
>>> passed to that instance. Consequently, later assigns are ignored.
>> 
>> Stubs and assigns are unrelated, so even though this might be a bug,
>> I don't think it's the cause of what you're seeing.
> 
> It is. If I put all the assign(:x, value) before I first access #view, 
> everything works as expected. The problem I had is entirely unrelated to 
> stubs.

Well, to be fair, the initial problem you cited in this thread (even in the subject line) is "partial mocks", not "assigns."

That said, yes, this is a bug. I'll see if we can do something about that in Rails proper rather than rspec, which is just decorating the rails behavior.

Cheers,
David

> It's just that when I do things in this order
> 
> view.stub(:something).and_return('foo')
> assign(:bar, 10)
> 
> The assign doesn't have an effect. I might as well have
> 
> view.flash[:notice] = 'Something is rotten.'
> assign(:bar, 10)
> 
> and the effect would be the same. Assigns that come after the view is 
> first initialized are ignored.




More information about the rspec-users mailing list