Adding a custom matcher to a controller

Hey list,

I’ve written a custom matcher (gist:46858 · GitHub) which
I’d like to use in Cucumber specifically.
In my spec_helper, I have required the file where the matcher lives
in, and added it to Spec::Runner.configure.
In one of my cucumber steps, I have: response.should have_notice
(“foo”).
However, when I run the feature, I get the following error:
undefined method `has_notice?’ for #<ActionController::CgiResponse:
0x308fc84> (NoMethodError)
Note the has_notice?..

Any ideas on how to add this matcher to the response?

cheers,
bartz

On Wed, Jan 14, 2009 at 11:12 AM, Bart Z.
[email protected]wrote:

Note the has_notice?..

Any ideas on how to add this matcher to the response?

World do |world|
world.extend(Matchers)
world
end

Documented here:

http://wiki.github.com/aslakhellesoy/cucumber/a-whole-new-world

Aslak

On 14-jan-2009, at 12:10, aslak hellesoy wrote:

However, when I run the feature, I get the following error:
undefined method `has_notice?’ for #<ActionController::CgiResponse:
0x308fc84> (NoMethodError)
Note the has_notice?..

Any ideas on how to add this matcher to the response?

World do |world|
world.extend(Matchers)
world
end

Thanks, now my matcher did get included. However, I’m trying to use
have_tag (as in gist:46868 · GitHub), and I get this error:
undefined method `have_tag’ for #Matchers::HaveNotice:0x2e4a5c8
(NoMethodError)
Any ideas on how to make have_tag available in my custom matcher?

thanks,
bartz

Documented here:

http://wiki.github.com/aslakhellesoy/cucumber/a-whole-new-world

Not particularly useful in this case, but if I have some spare time
today, I’ll try to update the docs.

On Wed, Jan 14, 2009 at 5:34 AM, Bart Z.
[email protected] wrote:

In my spec_helper, I have required the file where the matcher lives in,
world.extend(Matchers)
world
end

Thanks, now my matcher did get included. However, I’m trying to use have_tag
(as in gist:46868 · GitHub), and I get this error:
undefined method `have_tag’ for #Matchers::HaveNotice:0x2e4a5c8
(NoMethodError)
Any ideas on how to make have_tag available in my custom matcher?

Gotta include the rspec-rails matchers as well (or webrat if you’re
using those).

On 14 jan 2009, at 16:43, David C. wrote:

#ActionController::CgiResponse:0x308fc84 (NoMethodError)
have_tag
(as in gist:46868 · GitHub), and I get this error:
undefined method `have_tag’ for #Matchers::HaveNotice:0x2e4a5c8
(NoMethodError)
Any ideas on how to make have_tag available in my custom matcher?

Gotta include the rspec-rails matchers as well (or webrat if you’re
using those).

Uhm, yeah, but how? :slight_smile:
I’ve included this in spec_helper, so I thought the webrat/rspec-rails
matchers were included automatically…

thanks,
bartz

On Wed, Jan 14, 2009 at 3:47 PM, Bart Z.
[email protected] wrote:

wrote:

undefined method `has_notice?’ for
Thanks, now my matcher did get included. However, I’m trying to use
I’ve included this in spec_helper, so I thought the webrat/rspec-rails
matchers were included automatically…

Ah - I see the problem. They are, but outside the scope of the custom
matcher.

Here’s how I’ve gotten around this: gist:47126 · GitHub -
don’t know if that’ll work as/is, but it should give you the idea,
which is to provide access to the scope in which have_tag is defined
and call it on that scope.

HTH,
David