A tiny and simple test framework for crystal

Releases:

  • v1.0.0 - June 24, 2018
  • v0.1.2 - July 13, 2016
  • v0.1.1 - May 19, 2016
  • v0.1.0 - May 6, 2016
  • v0.0.3 - April 7, 2016

Dependencies:

Development dependencies:

Owner:

crotest

Build Status

A tiny and simple test framework for Crystal with common assertions and no pollution into Object class.

NOTE: This library was built during the Citrusybte's Investment Day program

Example

require "crotest"

describe "DSL" do
  it "defines small test cases" do
    assert true
  end

  describe "nested describes for a better readability" do
    it "has only a few assertions" do
      var = false

      reject var
      assert_equal false, var
      assert_raise Exception do
        raise Exception.new("Boom!")
      end
    end
  end

  pending "tests are defined without a block"

  pending "tests can also be defined with a block, which will not be executed" do
    fail "This won't be executed :)"
  end
end

Installation

Add this to your application's shard.yml:

dependencies:
  crotest:
    github: emancu/crotest

Usage

require "crotest"

Run your tests with crystal spec.

Assertions

  • assert
  • reject
  • assert_equal
  • assert_raise

Custom assertions

Extend the assertions used by Crotest is really easy. You need to open the module Crotest::Assertions and add your assertions like the example below:

require "crotest"

module Crotest::Assertions
  macro assert_greater_than_4(value, file = __FILE__, line = __LINE__)
    assert {{value}} > 4, "#{{{value}}} <= 4", {{file}}, {{line}}
  end
end


it "supports my custom assertion" do
  assert_greater_than_4 5
end

Before/After blocks

If you need to run code before or after each test, declare each block like in the example below. Remember to define before/after blocks before the corresponding it blocks. Given this is not dynamically evaluated, we must define at the beginning of the file or describe block.

before do
  # First block to be executed
end

after do
  # Fifth and last block to be executed
end

describe "a nested context" do
  before do
    # Second block to be executed
  end

  after do
    # Fourth block to be executed
  end

  it "executes the before blocks and" do
    # Third block to be executed
  end
end

Contributing

  1. Fork it ( https://github.com/emancu/crotest/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors

  • emancu Emiliano Mancuso - creator, maintainer
Github statistic:
  • 19
  • 4
  • 3
  • 0
  • 2 months ago

License:

MIT License

Links: