This has been discussed extensively before:

https://groups.google.com/forum/#!msg/rspec/bcDpKAXx0MQ/7adBw2mOxwkJ

On Fri, Sep 25, 2015 at 9:42 AM, Jason Fleetwood-Boldt <[email protected]
> wrote:

> One thing I've never understood about rspec, and specifically the warning
> against using allow any instance of, is how to test code that creates
> objects that you will want to stub.
>
> Since the objects are not created in rspec (but instead inside the tested
> code), I can't stub them, so I often have to either use
> allow_any_instance_of or stub out the new method on the class to return
> doubles.
>
> I understand why allow_any_instance_of is code-smelly but I've never
> really seen a good approach to this.
>
>
>
>
>
> On Sep 25, 2015, at 10:23 AM, Myron Marston <[email protected]>
> wrote:
>
> The relish docs are kept under source in the repository for each gem under
> the features directory. The ones you mentioned are here:
>
>    -
>    
> https://github.com/rspec/rspec-mocks/blob/master/features/old_syntax/any_instance.feature
>    -
>    
> https://github.com/rspec/rspec-mocks/blob/master/features/working_with_legacy_code/any_instance.feature
>
> Please submit suggested doc changes as a PR to the repo.
>
> Thanks,
> Myron
> ​
>
> On Fri, Sep 25, 2015 at 2:18 AM, James Doyley <[email protected]> wrote:
>
>> Hi,
>>
>> I was looking at the docs, specifically
>> https://relishapp.com/rspec/rspec-mocks/docs/old-syntax/any-instance
>>
>> https://relishapp.com/rspec/rspec-mocks/docs/working-with-legacy-code/any-instance
>>
>> I agree that it's a design smell, but I want to suggest an example.  I
>> couldn't find out how to contribute to the documentation hence posting here.
>>
>> I was just thinking a better example as an alternative would be
>>
>> RSpec.describe User, type: :model do
>>   subject(:user){ User.new }
>>   before(:each) do
>>     allow(user).to receive(:foo).and_return("bar")
>>   end
>>
>>
>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "rspec" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To post to this group, send email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/rspec/a725b287-f0ac-4315-83ca-c4ab9c03ba05%40googlegroups.com
>> <https://groups.google.com/d/msgid/rspec/a725b287-f0ac-4315-83ca-c4ab9c03ba05%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/CADUxQmspk2-5i197tVPaR27qSq-0daK7EWd-im32qy3UT0CHog%40mail.gmail.com
> <https://groups.google.com/d/msgid/rspec/CADUxQmspk2-5i197tVPaR27qSq-0daK7EWd-im32qy3UT0CHog%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> ----
>
> Jason Fleetwood-Boldt
> [email protected]
> http://www.jasonfleetwoodboldt.com/writing
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/A0C13FEA-7B3A-43EB-86DF-B424622A7155%40datatravels.com
> <https://groups.google.com/d/msgid/rspec/A0C13FEA-7B3A-43EB-86DF-B424622A7155%40datatravels.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/CADUxQmu%3D0%2BTobfS%3Df8z%3DBzN3_AhATkAhEeTpMqd4Npx9XvkXrg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to