This is standard Ruby scoping (as I’ve pointed out on stack overflow). Phil’s
answer is a great workaround but I strongly encourage not shadowing the name
(e.g. call it something else) to prevent confusion around precedence.
I elaborate further on the Stack Overflow post, but shall repeat here.
The parameter passed to the block is available within the block's closure. So
the evaluated string `"parameter=#{parameter}"` being within the closure works
just fine.
What you're trying to do the same as is this:
```
b = "Hi!"
def a
puts b
end
a()
# NameError (undefined local variable or method `b' for main:Object)
```
As Phil points out a solution is to wrap parameter in a `let`, which is the
same (roughly) as doing:
```
b = "Hi!"
def a
puts b
end
define_method(:b) { b }
a()
# Hi!
# => nil
```
Cheers
Jon Rowe
---------------------------
[email protected]
jonrowe.co.uk
On 22 June 2020 at 21:04, Evan Brodie wrote:
> I also asked on Stackoverflow
> (https://stackoverflow.com/questions/62522543/rspec-shared-example-access-parameter-in-a-helper-method),
> but I'm posting here too because this is the preferred location to ask for
> rspec help according to your website: http://rspec.info/help/
>
> ***********************************
>
> Suppose I create an Rspec shared example group with one parameter (the
> business purpose of the tests are irrelevant, it is an overly simplified
> version of my current codebase):
>
> shared_examples "some example group" do |parameter|
>
> it "does something" do
>
> puts "parameter=#{parameter}"
>
>
>
> print_the_parameter
>
> end
>
>
>
> def
> print_the_parameter
> puts
> "parameter=#{parameter}"
>
> end
> end
>
> I am able to access the parameter as a variable just fine with the it test
> block. However, I am running into an "undefined local variable or method"
> when I try to access parameter from a method. Why is that? I have proven in
> my codebase (and is prevalently shown in Rspec documentation) that the
> parameter is available in test blocks, lifecycle methods like before, and in
> let variable declarations. But why not helper methods?
>
> Thank you.
--
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 view this discussion on the web visit
https://groups.google.com/d/msgid/rspec/dejalu-217-c5c03b8c-4725-4163-8dc7-02fa14515bff%40jonrowe.co.uk.