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
For more options, visit this group at 
http://groups.google.com/group/watir-general

Reply via email to