Skip to content

Standard Library-like library for assertions in Ruby. Encourages us to use assertion methods anywhere.

License

Notifications You must be signed in to change notification settings

yasaichi/standard_assert

Repository files navigation

standard_assert

Gem Version Build Status Code Climate Test Coverage

standard_assert is a Standard Library-like library for assertions in Ruby.
It is aimed at encouraging us to use assertion methods anywhere; Not only testing but also production.

Installation

Add this line to your application's Gemfile:

gem 'standard_assert'

And then execute:

$ bundle

Usage

Include Assert module in a class, and you can use the assertion methods as its private methods:

require 'standard_assert'

class Stack
  include ::Assert

  def initialize
    @store = []
  end

  def pop
    assert(!@store.empty?)
    @store.pop
  end

  def push(element)
    @store.push(element)
    self
  end
end

Stack.new.pop #=> AssertionError (Expected false to be truthy.)

Or just call them with the module as a receiver:

class Stack
  def peek
    ::Assert.assert(!@store.empty?)
    @store.last
  end
end

Stack.new.peek #=> AssertionError (Expected false to be truthy.)

API

Assert provides aseert and assert_* methods as its module functions.
The method interfaces are basically the same as ones of minitest gem except that they throw not Minitest::Assertion but AssertionError when an assertion fails.

See also: http://docs.seattlerb.org/minitest/Minitest/Assertions.html

Contributing

You should follow the steps below.

  1. Fork the repository
  2. Create a feature branch: git checkout -b add-new-feature
  3. Commit your changes: git commit -am 'Add new feature'
  4. Push the branch: git push origin add-new-feature
  5. Send us a pull request

License

The gem is available as open source under the terms of the MIT License.

About

Standard Library-like library for assertions in Ruby. Encourages us to use assertion methods anywhere.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published