[rspec-users] Test for a gem/plugin?
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
> 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
> one test for with respect to the specific implementation? The
> 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
> When /authentication by authlogic/ do
> #TODO: Find out how to test for a loaded gem within an application
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 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.
More information about the rspec-users