Have you tried just turning @selenium into a method for lazy
initialization? So, you could have:
def selenium
@selenium ||= SeleniumHelper.selenium
end
The in your spec just use the method call as opposed to the instance
variable.
That is probably what I would do. I have never used initialize in a
module so I don''t have any ideas along those lines.
-Ben
Korny Sietsma wrote:> Hi folks,
>
> I''m somewhat new to the current RSpec release - at work we are
still
> using 0.8.something, with "context ''blah'' do ...
specify ''should
> thing'' ..."
>
> We have some helper code to automatically mix-in selenium:
> module SeleniumHelper
> include SpecHelper
> ...
> def initialize(arg)
> @selenium = SeleniumHelper.selenium
> end
> (selenium.rb also adds some method-missing magic so we don''t need
to
> say ''@selenium.open(foo)'' we can just say
''open(foo)'', but that''s not
> particularly relevant to my question)
>
> My problem is, at home in rspec 1.0.8, including this module
doesn''t work:
>
> describe ThingController do
> include SeleniumHelper
>
> it "should list all known things" do
> @selenium.open "/thing/list" # ==> fails with
"nil.open" error
> SeleniumHelper.selenium.open "/thing/list" # ==>
succeeds!
> open "/thing/list" # ==>fails with "nil.open"
error
> end
> end
>
> The first line fails - @selenium seems to be nil, I get an exception.
> The second line passes.
> The third line fails also, for the same reason as the first.
>
> Any thoughts? Any hints on getting @selenium initialised? It seems
> that the method-missing magic is (probably) working, as the third line
> fails in the same way as the first line - but I''d like to know how
to
> get @selenium to exist.
>
> (addendum - if I add to my startup code:
> config.before(:all) { @selenium = SeleniumHelper.selenium }
> it seems to work! But I''m still interested in why it
doesn''t get set
> in "initialize"...)
>
> - Korny
>
>