[rspec-users] Adding a custom matcher to a controller

David Chelimsky dchelimsky at gmail.com
Wed Jan 14 17:20:14 EST 2009


On Wed, Jan 14, 2009 at 3:47 PM, Bart Zonneveld <zuperinfinite at gmail.com> wrote:
>
> On 14 jan 2009, at 16:43, David Chelimsky wrote:
>
>> On Wed, Jan 14, 2009 at 5:34 AM, Bart Zonneveld <zuperinfinite at gmail.com>
>> wrote:
>>>
>>> On 14-jan-2009, at 12:10, aslak hellesoy wrote:
>>>
>>>> On Wed, Jan 14, 2009 at 11:12 AM, Bart Zonneveld
>>>> <zuperinfinite at gmail.com>
>>>> wrote:
>>>>>
>>>>> Hey list,
>>>>>
>>>>> I've written a custom matcher (http://gist.github.com/46858) 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?
>>>>
>>>> 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 http://gist.github.com/46868), 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? :)
> 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: http://gist.github.com/47126 -
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

>
> thanks,
> bartz
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list