Sha256: 5b5fabf217f1a7565ee5a014f8671df683d1fc2cc0cb0ebe228821964ac627de

Contents?: true

Size: 1.92 KB

Versions: 2

Compression:

Stored size: 1.92 KB

Contents

fault_injection.rb

** FAQ

  * What is it?

    - A 'fault injection' tool for ruby.

  * What is a 'fault injection'? What is it used for?

    - Fault injection is one of testing techniques.
      It makes easier to test your application's error handling behavior or
      to improve the coverage of your tests.
      See http://en.wikipedia.org/wiki/Fault_injection for more details.

  * What can I do with fault_injection.rb ?

    - You can raise error at any line of code or particular method call
      without changing the target code.
  * Cat it be used with Ruby on Rails testing?

    - It should, but it's not yet tested well with big applications.
      Please try and feel free to send me a bug report.

  * Can I use it in my application code?

    - No. It is for your testing code.

  * Can I use it everywhere in my test code?

    - You should not. It is for some limited situation that rarely
      happen or difficult to set up (ex. IOError).
      If you can make 'evil situation' easily, that's better ;)
      
      In addition, fault_injection.rb uses set_trace_func API of ruby and
      it makes a script much slower.

** Installing

$ sudo gem install faultinjection

** Sample codes

  # sample.rb
  class Foo
    def foo
      puts "I love injection"
    end

    def bar
      10 / 2  # this is line 7
    end
  end
  __END__

  # test.rb
  require 'rubygems'
  require 'fault_injection'

  FaultInjection.inject "Foo#foo > Kernel#puts", IOError, "IO error"

  f = Foo.new
  f.foo #=> IOError

  FaultInjection.inject "sample.rb:7",ZeroDivisionError

  f.bar #=> ZeroDivisionError
  __END__


** License

This code is free to use under the terms of the MIT license. 

** Contact

The SVN repository is available at http://faultinjection.rubyforge.org/svn/

Comments are welcome. Feel free to Send an email to keisukefukuda@gmail.com
(Please include 'ruby' or 'fault_injection' in the title).


Thank you for using fault_injection.rb

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
faultinjection-0.0.2 README.txt
faultinjection-0.0.3 README.txt