minitest.cr alternatives and similar shards
Based on the "Testing" category.
Alternatively, view minitest.cr alternatives based on common mentions on social networks and blogs.
-
spec2-mocks
This library connects spec2.cr and mocks.cr, effectively enabling 'have_received' expectation for spec2. -
hashr
Hashr is a tiny library makes test on JSON response easier, and can also be used as a models object.
InfluxDB - Purpose built for real-time analytics at any scale.
Do you think we are missing an alternative of minitest.cr or a related project?
README
Minitest for Crystal
Unit tests and assertions for the Crystal programming language, using the fantastic minitest as reference.
Getting Started
Given that you'd like to test the following class:
class Meme
def i_can_has_cheezburger?
"OHAI!"
end
def will_it_blend?
"YES!"
end
end
Unit Tests
Define your tests as methods beginning with test_
:
require "minitest/autorun"
class MemeTest < Minitest::Test
def meme
@meme ||= Meme.new
end
def test_that_kitty_can_eat
assert_equal "OHAI!", meme.i_can_has_cheezburger?
end
def test_that_it_will_not_blend?
refute_match /^no/i, meme.will_it_blend?
end
def test_that_will_be_skipped
skip "test this later"
end
end
Specs
Specs follow the same
design rationale
as the original Minitest: describe
generates classes that inherit from
Minitest::Spec, and it
generates test methods.
require "minitest/autorun"
describe Meme do
let(:meme) { Meme.new }
describe "when asked about cheeseburgers" do
it "must respond positively" do
meme.i_can_has_cheezburger?.must_equal("OHAI!")
end
end
describe "when asked about blending possibilities" do
it "won't say no" do
meme.will_it_blend?.wont_match(/^no/i)
end
end
end
You may use assertions in your specs (they'll work the same) or you may prefer the expect
syntax:
expect(meme.i_can_haz_cheezeburger?).must_equal("OHAI!")
expect(meme.will_it_blend?).wont_match(/^no/i)
Run Tests
Eventually run the tests:
$ crystal run test/meme_test.cr spec/meme_spec.cr -- --verbose
You may filter your tests using an exact test name, or a regexp:
$ crystal run test/meme_test.cr -- -n test_that_kitty_can_eat
$ crystal run test/meme_test.cr -- -n /will/
When using Minitest::Spec with assertions or the expect
syntax, you can avoid to taint Object with all the #must_
and #wont_
expectations:
$ crystal run -Dmt_no_expectations spec/meme_spec.cr
License
Distributed under the MIT License. Please see LICENSE for details.
Credits
- Julien Portalier @ysbaddaden for the Crystal implementation
- Ryan Davis @zenspider and seattle.rb for the original Ruby gem
*Note that all licence references and agreements mentioned in the minitest.cr README section above
are relevant to that project's source code only.