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.
