[rspec-users] Custom Matcher and Webrat methods

Matt Wynne matt at mattwynne.net
Wed Dec 9 05:41:35 EST 2009


On 8 Dec 2009, at 22:04, Rodrigo Rosenfeld Rosas wrote:

> I would like to be able to write a custom matcher so that I could  
> call this test, for instance:
>
> @user.should be_allowed_to_visit(url)
> @non_welcome.should_not be_allowed_to_visit(url)
>
> The matcher would call Webrat methods such as 'visit'.
>
> The problem is that it would try to call 'visit' from User class  
> instead of the binding in which @user access is verified...
>
> I have manually set the binding to the Matcher in a before(:all), to  
> avoid calling 'be_allowed_to_visit(url, binding)', but I would like  
> to know if there would be a better way to "get" this binding...
>
> Any thoughts on that?

How have you defined the matcher? If you use the old-school technique  
where you create a matcher class and a helper method to construct the  
class (instead of using the shiny new matcher DSL) then the method  
should execute in the context that can see the binding, so you can  
pick it up and pass it into the matcher class at that point.

Make sense?

cheers,
Matt

http://mattwynne.net
+447974 430184



More information about the rspec-users mailing list