Hi,
When performing BDD there are few occasions when a certain example (BDD
test) depends on other context/example.
Here is one example:
describe Person do
before do
@person = Person.new
@person.Age = 19
end
it “should be able to vote” do
@person.CanVote().should == true
end
describe “19 years old” do
it “should be able to vote” # does not work
end
end
The context of “19 years old” fails since it requires to put the
“voting” context as a shared example which I don’t want to do. If we can
just call other contexts within the parent context then it would be
great. I think it would be great if the above example just works.
Mohammad A. wrote:
The context of “19 years old” fails since it requires to put the
“voting” context as a shared example which I don’t want to do. If we can
just call other contexts within the parent context then it would be
great. I think it would be great if the above example just works.
I’m not quite sure what you’re expecting in this case.
I can understand if you are expecting the parent context to be passed
down to the child, but the code:
it “should be able to vote” # does not work
Is only saying “here is a description about what I want to test… I’m
getting ready to test something… and … nothing”
I’d imagine based on a conversation we had that you “might” be expecting
the implicit method calling/subject setup mentioned in the post here:
http://blog.davidchelimsky.net/2009/01/13/rspec-1-1-12-is-released/
However, for that, you’d actually need the following syntax (which is
probably using some magic shortcuts behind the scenes):
it { should be_able_to_vote }
You’d also need to add (perhaps monkey-patch if you’re dealing with an
existing C# dll) the method that RSpec will be looking for (namely:
able_to_vote? )
Since you already have CanVote, you could actually just alias it like
this:
class Person
alias_method :able_to_vote?, :CanVote
end
Let us/me know if this helps, and how far you get from here
If you’d like to discuss further personally, please email or direct
message me.
Thanks