Solution for documentation: not everything has to go inside a describe
block.  Create/collect the array before any describe methods.

@Array = [...] or Method to collect array data

@array.each do |name, stuff|
    describe name do
        it "should put the lotion in the basket" do
          <code>
        end
    end
end

On Mar 3, 9:12 am, Adam Reed <reed.a...@gmail.com> wrote:
> Thanks guys, that makes sense.  I'm definitely focusing too much on
> the new element (RSpec) and too little on the basic architecture!
>
> On Mar 3, 7:18 am, Ethan <notet...@gmail.com> wrote:
>
> > You're defining the @countries instance variable outside of any method.
> > You're making @countries an instance variable of whatever 'self' is in the
> > describe block (which appears to be a class or a module), which is not the
> > same thing that your methods are being called on (presumably an instance of
> > that class or a class including that module). If you want 'countries' to be
> > the same across all instances of the class, use a class variable. If you
> > want it to be the same throughout the program, use a global. If it should be
> > per-instance, use an instance variable defined in some method of the class
> > (#initialize, most likely).
>
> > On Tue, Mar 2, 2010 at 16:11, Adam Reed <reed.a...@gmail.com> wrote:
> > > This script works, but only if I explicitly define the array that I'm
> > > iterating over (][countryname, url]].each do, rather than
> > > @countries.each do).  In a nutshell, the script goes to a static page,
> > > collects the links, visits each linked page and verifies an item - it
> > > has been significantly dumbed down for the purpose of this question
> > > and I have tested this simplified version to make sure it gives the
> > > same output.
>
> > > Can someone help me understand why my array here (@countries) is not
> > > recognized?  I tried to instantiate it as a global variable
> > > ($countries) and it still was not recognized.  Is it an issue with my
> > > organization/format, or something else?
>
> > > **** Again, if I explicitly describe an array in place of the
> > > variable, the script works ****.
>
> > > global_page_spec.rb
> > > $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 ==
> > > __FILE__
> > > require 'helpers/example_helper'
>
> > > describe "The country page for" do
> > >  include ExHelper
>
> > >  before(:all) do
> > >    setup
> > >    collect_global_countries
> > >  end
>
> > > �...@countries.each do |name, link|
> > >    describe name do
> > >    it "should contain the word #{name} in the title" do
> > >     �...@browser.goto link
> > >     �...@browser.div(:id, /content-content/).text.should include(name)
> > >    end #it
> > >    end #desc
> > >  end #countries
>
> > >  after(:all) do
> > >    teardown
> > >  end #after
> > > end #spec
>
> > > example_helper.rb
> > > $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..') if $0 ==
> > > __FILE__
> > > require 'helpers/global_helper'
>
> > > module ExHelper
> > >  include GlobalHelper
>
> > >  def setup
> > >   �...@browser = Watir::Browser.new
> > >   �...@browser.add_checker lambda {|b| b.text.should_not include('The
> > > requested page could not be found.')}
> > >  end # setup
>
> > >  def collect_global_countries
> > >   �...@countries = Array.new
> > >   �...@countries.should be_empty
>
> > >   �...@browser.goto "http://www.#{$env}.com/global";
> > >   �...@browser.table(:class, /global-list/).links.each do |link|
> > >     �...@countries << [link.text, link.href]
> > >    end #links
>
> > >   �...@countries.should_not be_empty
>
> > >  def teardown
> > >   �...@browser.close
> > >  end # teardown
> > > end #module
>
> > > The Error:
>
> > > global_page_spec.rb:12: undefined method `each' for nil:NilClass
> > > (NoMethodError)
> > >        from C:/Ruby/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/example/
> > > example_group_methods.rb:183:in `module_eval'
> > >        from C:/Ruby/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/example/
> > > example_group_methods.rb:183:in `subclass'
> > >        from C:/Ruby/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/example/
> > > example_group_methods.rb:55:in `describe'
> > >        from C:/Ruby/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/example/
> > > example_group_factory.rb:31:in `create_example_group'
> > >        from
> > > C:/Ruby/lib/ruby/gems/1.8/gems/rspec-1.3.0/lib/spec/dsl/main.rb:
> > > 28:in `describe'
> > >        from global_page_spec.rb:4
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > > "Watir General" group.
> > > To post to this group, send email to watir-general@googlegroups.com
> > > Before posting, please read the following guidelines:
> > >http://wiki.openqa.org/display/WTR/Support
> > > To unsubscribe from this group, send email to
> > > watir-general+unsubscr...@googlegroups.com<watir-general%2bunsubscr...@googlegroups.com>
> > > For more options, visit this group at
> > >http://groups.google.com/group/watir-general
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To post to this group, send email to watir-general@googlegroups.com
Before posting, please read the following guidelines: 
http://wiki.openqa.org/display/WTR/Support
To unsubscribe from this group, send email to 
watir-general+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/watir-general

Reply via email to