[rspec-users] Test for a gem/plugin?

Matt Wynne matt at mattwynne.net
Wed Dec 10 09:54:02 EST 2008

On 9 Dec 2008, at 19:06, James Byrne wrote:

> I have decided that for now I am going to use the authlogic gem to
> provide authentication for the project I am creating.  The question
> arises, since authentication is a user feature request and since it is
> to be satisfied through the use of a gem (not a plugin) then should  
> one
> test for the availability of the gem or not?
> Secondly, given that a gem is providing the authentication logic  
> (and is
> not my code which therefore should not be tested by me) then what  
> should
> one test for with respect to the specific implementation?  The  
> existence
> of particular attributes?  The existence of a users model?
> Does one write step definitions (assuming rspec) like:
> When /users are authenticated/ do
>  #TODO: This does not work even when the model class exists.
>  User.should exist
> end
> When /authentication by authlogic/ do
>  #TODO: Find out how to test for a loaded gem within an application
> end

If you're working at the level of Cucumber features, I would stay well  
away from implementation details like the particular technology you're  
using for authentication.

Remember this is called Behaviour Driven Development[1] for a reason.  
You're focussing on specifying the desired *behaviour* of the system.  
How you chose to satisfy the user's need for that behaviour is an  
entirely separate matter.

A large benefit of having Acceptance Tests, IMO, is that you could  
radically change your implementation under the hood, such as switching  
to a different authentication mechanism, and the features would still  
be valid. You might have to code up some of your steps a little  
differently, but as long as the users want the same thing from the  
system, the features should not have to change in the slightest.


Matt Wynne

More information about the rspec-users mailing list