This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
laziness /
| name | age | message | |
|---|---|---|---|
| |
MIT-LICENSE | Wed Mar 19 06:43:06 -0700 2008 | [ben] |
| |
README | Fri Apr 18 05:30:28 -0700 2008 | [bscofield] |
| |
Rakefile | Wed Mar 19 06:43:06 -0700 2008 | [ben] |
| |
TODO | Fri Mar 21 05:23:06 -0700 2008 | [bscofield] |
| |
init.rb | Wed Mar 19 06:43:06 -0700 2008 | [ben] |
| |
install.rb | Wed Mar 19 06:43:06 -0700 2008 | [ben] |
| |
lib/ | Thu Jun 19 14:10:56 -0700 2008 | [jaggederest] |
| |
tasks/ | Wed Mar 19 06:43:06 -0700 2008 | [ben] |
| |
test/ | Wed Mar 19 06:43:06 -0700 2008 | [ben] |
| |
views/ | Thu Mar 20 18:59:43 -0700 2008 | [ben] |
README
Laziness
========
Laziness does one thing: if your application throws an unhandled error, it will automatically create a failing test for
you to copy into the appropriate test file - or if you're using RSpec, it'll write the appropriate spec for you.
Installation
============
If you're running ExceptionNotifier, you'll need to make sure that vendor/plugins/laziness/views/_laziness.rhtml is
copied into vendor/plugins/exception_notification/views/exception_notifier - that will allow your exception notifier
emails to include the generated test (or spec). The file is normally copied over by the plugin installation process, but
if it doesn't make it there you can move it by hand.
Example
=======
Say you're browsing your site and you get a 500 error on /users/new, which is rendering the UsersController#new action.
In the error page (or exception email, if you're using ExceptionNotifier), Laziness adds something like the following:
def test_get_users_new_should_not_raise_nameerror_exception
assert_nothing_raised(NameError) do
get :new, {[params from request]}, {[session from request]}, {[flash from request]}
end
end
The exact exception asserted (in this case, NameError) will depend on what caused the 500 error in the first place.
If you're using RSpec, the generated code will look like this:
describe "Handling GET users new" do
it "should not raise NameError" do
lambda {
get :new, {[params from request]}, {[session from request]}, {[flash from request]}
}.should_not raise_error(NameError)
end
end
Catching Specific Exceptions
============================
You can customize the tests to be generated on an exception-by-exception basis; just add the appropriate file to
lib/exceptions/what/ever.rb and make sure it defines ++test++ and ++spec++ methods; look at
lib/exceptions/action_controller/unknown_view.rb for an example.
Copyright (c) 2008 Ben Scofield, released under the MIT license




