Giter VIP home page Giter VIP logo

laziness's Introduction

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

laziness's People

Contributors

bscofield avatar jnewland avatar jaggederest avatar

Stargazers

Roman avatar Angus H. avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.