[rspec-users] describe scope

Mark Van De Vyver mvyver at gmail.com
Wed Nov 21 17:08:05 EST 2007


On Nov 22, 2007 9:01 AM, aslak hellesoy <aslak.hellesoy at gmail.com> wrote:
> On 11/21/07, Mark Van De Vyver <mvyver at gmail.com> wrote:
> > Hi,
> > Thanks for the prompt responses...
> >
> > On Nov 22, 2007 1:18 AM, David Chelimsky <dchelimsky at gmail.com> wrote:
> > > On Nov 21, 2007 1:07 AM, Mark Van De Vyver <mvyver at gmail.com> wrote:
> > > > Hi,
> > > > Googling 'RSpec describe scope' didn't yield much, so apologies if
> > > > this question has been dealt with.
> > > >
> > > > It seem well known that a ruby class is 'visible' between describes,
> > > > and if this is a problem then you should use some counter as prefix or
> > > > suffix:
> > > > 'class Item_001; ... end'
> > > >
> > > > Is there any work underway, or sheduled release where classes will
> > > > exist only in the scope they are defined?
> > >
> > > This has never been brought up before. Feel free to submit a feature
> > > request at http://rspec.lighthouseapp.com/.
> > >
> > > > Writing spec's for Og is where this becomes an issue because Og will
> > > > grab _all_ manageble objects it can 'see'... all sorts of PITA can
> > > > arise.
> > >
> > > I found this:
> > >
> > > http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/6924
> >
> > I thought to make a feature request with a spec, any comments on why
> > the following fails
> >
>
> No idea, because you forgot to attach any output from RSpec ;-)
>

Apologies, the spec and output:

require 'spec'

module Example
  describe "RSpec " do
    before(:each) do
        class ::Item
          attr_accessor :name
        end
    end

    it "should not raise error on defined?" do
      lambda{ defined?(Item)}.should_not raise_error
    end
    it "should be defined as a constant" do
       defined?(Item).should == "constant"
    end

    after(:each) do
      remove_const("Item")
    end
  end
end # spec

# The output
FF

1)
NoMethodError in 'RSpec  should not raise error on defined?'
undefined method `remove_const' for [RSpec example]:#<Class:0xb7bb2ef4>
/usr/src/nitro-repo/og/test/rspec_example_spec.rb:19:

2)
NoMethodError in 'RSpec  should be defined as a constant'
undefined method `remove_const' for [RSpec example]:#<Class:0xb7bb2ef4>
/usr/src/nitro-repo/og/test/rspec_example_spec.rb:19:

Finished in 0.006203 seconds

2 examples, 2 failures

> > # rspec example
> > require 'spec'
> >
> > module Example
> >   describe "RSpec " do
> >     before(:each) do
> >         class ::Item
> >          attr_accessor :name
> >         end
> >     end
> >
> >     it "should not raise error on defined?" do
> >       lambda{defined?("Item")}.should_not raise_error
> >     end
> >     it "should be defined after being removed" do
> >       defined?("Item").should == "constant"
> >     end
> >
> >     after(:each) do
> >       Kernel.remove_const("Item")
> >     end
> >   end
> > end # rspec example
> >
> >
> > Appreciate any comments.
> > Mark
> >
> > > So you could, in theory, monkey patch ExampleGroupMethods (in trunk
> > > 2937 - these names are changing a bit, so keep an eye out) to remove
> > > the defined constant
> > >
> > > >
> > > > Thanks for all the great work, T/BDD definitely is a brilliant way to
> > > > work, and RSpec makes it painless, esp for us amatuers :)
> > >
> > > That's what we want to hear! Thanks.
> > >
> > > Cheers,
> > > David
> > >
> > >
> > > >
> > > > Mark
> > > > _______________________________________________
> > > > rspec-users mailing list
> > > > rspec-users at rubyforge.org
> > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > >
> > >
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
>


More information about the rspec-users mailing list