Forum: RSpec [Cucumber] Struggling with "multiple step definitions"

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3880f04333bf8375b44cd6aa135406c7?d=identicon&s=25 Bart Zonneveld (Guest)
on 2009-01-17 23:40
(Received via mailing list)
Hey gang,

I find myself struggling with multiple step definitions in cucumber
all the time. I regularly test the contents of my flash[:notice] in
steps, since I think that's part of the behaviour of the app. So,
while implementing a new feature, I ran into the following error:

/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.1.15/bin/../lib/cucumber/
step_mother.rb:81:in `regexp_args_proc': Multiple step definitions
match "zou ik een melding moeten zien dat de reactie gemarkeerd is als
spam": (Cucumber::Multiple)

features/steps/comments.rb:93:in `/^zou ik een melding moeten zien dat
de reactie gemarkeerd is als spam$/'
features/steps/common.rb:9:in `/^zou ik een melding moeten zien dat de|
het (.*?) is opgeslagen$/'

Even those who aren't fluent in Dutch (since that's what the steps are
written in), it's clearly not the same step... I am no regex wizard,
so I might do something horribly wrong with my steps, but I do like to
know how I can fix this.

Any ideas?
thanks,
bartz
059ed46172a087063ce26250e44c8627?d=identicon&s=25 Fernando Perez (fernando)
on 2009-01-17 23:49
Bart Zonneveld wrote:
> Hey gang,
>
> Multiple step definitions

That's because you have defined more than once a step, so instead of
defining the same step for each feature, group step definitions by
resource / domain concept / model / whatever-you-call-it for instance.
here is a good documentation:

http://wiki.github.com/aslakhellesoy/cucumber/step...


--
On demand video training for distance learners: http://www.digiprof.fr
0be0e4aa42aacd9a8a95c792de273ca7?d=identicon&s=25 Aslak Hellesøy (aslakhellesoy)
on 2009-01-18 03:33
(Received via mailing list)
On Sat, Jan 17, 2009 at 10:48 PM, Bart Zonneveld
<zuperinfinite@gmail.com>wrote:

>
> features/steps/comments.rb:93:in `/^zou ik een melding moeten zien dat de
> reactie gemarkeerd is als spam$/'
> features/steps/common.rb:9:in `/^zou ik een melding moeten zien dat de|het
> (.*?) is opgeslagen$/'
>
> Even those who aren't fluent in Dutch (since that's what the steps are
> written in), it's clearly not the same step... I am no regex wizard, so I
> might do something horribly wrong with my steps, but I do like to know how I
> can fix this.
>

Step 1) Use rubular.com. It rocks. For this example you'll see that your
string matches both regexen (and where in the regexen they match)

Step 2) Avoid | in Step definitions if you can. They often work against
the
idea of  a Ubiquitous Language.
You can read more about this here:
http://www.nabble.com/Help-with-regexp-in-matcher-...
I realise that in your case you're using | to work around Dutch grammar
(several ways to say "the"), and in this case I think | is ok.

You probably wanted this:

/^zou ik een melding moeten zien dat (?:de|het) (.*) is opgeslagen$/

Ik hoop dat dit helpt :-)

Aslak
3880f04333bf8375b44cd6aa135406c7?d=identicon&s=25 Bart Zonneveld (Guest)
on 2009-01-18 13:17
(Received via mailing list)
On 18 jan 2009, at 01:25, aslak hellesoy wrote:

>> cucumber/step_mother.rb:81:in `regexp_args_proc': Multiple step
>> wizard, so I might do something horribly wrong with my steps, but I
>> do like to know how I can fix this.
>
> Step 1) Use rubular.com. It rocks. For this example you'll see that
> your string matches both regexen (and where in the regexen they match)

Ah, great tip! I managed to write this regex, which did exactly what I
wanted:

/^zou ik een melding moeten zien dat (de|het) (.*?) is opgeslagen$/


> Step 2) Avoid | in Step definitions if you can. They often work
> against the idea of  a Ubiquitous Language.
> You can read more about this here: 
http://www.nabble.com/Help-with-regexp-in-matcher-...
> I realise that in your case you're using | to work around Dutch
> grammar (several ways to say "the"), and in this case I think | is ok.

I'll read up on that thread, and hopefully find some good arguments to
drop the first person, since I think that's the most descriptive.

> You probably wanted this:
>
> /^zou ik een melding moeten zien dat (?:de|het) (.*) is opgeslagen$/
>
> Ik hoop dat dit helpt :-)

Nice one! That is correct :)

thanks a million, once again!
bartz
This topic is locked and can not be replied to.