power_assert

About

Power Assert shows each value of variables and method calls in the expression. It is useful for testing, providing which value wasnโ€™t correct when the condition is not satisfied.

Failure:
   assert { 3.times.to_a.include?(3) }
              |     |    |
              |     |    false
              |     [0, 1, 2]
              #<Enumerator: 3:times>

Related Projects

In general, you donโ€™t need to use this library directly. Use following test frameworks or extensions instead.

Requirement

Configuration

To colorize output messages, add require "power_assert/colorize" to your code. (It requires irb 1.3.1+)

Known Limitations

assert do
  # Reported
  func(foo: 0123456789, bar: "abcdefg")
end

assert do
  # Not reported
  func(foo: 0123456789,
       bar: "abcdefg")
end
val = false
assert do
  # Reported
  val == true
end

assert do
  # Not reported
  val
end
class Foo
  def method_missing(*)
    :foo
  end
end
foo = Foo.new

assert do
  # Not reported
  foo.foo
end
condition = true
expected = false
actual = true
assert do
  # This fails, but nothing is reported
  condition ? expected == actual : expected == actual
end
s = Struct.new(:a)
assert do
  # Not reported
  s.new(0)
end

assert do
  # Reported
  s[0]
end

Reference