I agree with Lenny. I can give an example. Lets say that parts of the application are restricted. Whenever they are accessed by an unauthorized user, they trigger UnauthorizedAccessError. Depending on the role the user has in the system, different actions should be performed, e.g. unauthenticated users get redirected to the hope page, admins see a special message with more details.
The example is a bit synthetic, but I'm sure you can see a similar, real one. In the design I have in mind, the logic that handles the UnauthorizedAccessError is handled in ApplicationController, while the error is raised in some specific controller. If you, in this error-raising path, assert that a non-authenticated user gets redirected to the homepage, you're encoding that behavior in the test. But this behavior is only accidental to the controller under test. This makes the test harder to understand. Worse, if you have multiple actions that raise this exception, you're encoding the knowledge in multiple tests. Now you have duplication too. I think it makes much more sense to assert that UnauthorizedAccessError is raised and specify what happens elsewhere.
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users