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.cr
Enhanced `spec` testing library for [Crystal](http://crystal-lang.org/). -
LuckyFlow
Automated browser tests for web applications. Similar to Ruby's Capybara. -
power_assert.cr
PowerAssert provides the more powerful assertion to you. -
timecop.cr
Mock with `Time.now` with the power of time travel, time freeze and time scale. -
microtest
Small test framework, because it has power asserts as the only assertion. -
mock
Doubles (stubs and mocks) library for Crystal, inspired by the API of rspec-mocks -
spec2-mocks
This library connects spec2.cr and mocks.cr, effectively enabling 'have_received' expectation for spec2. -
webdriver_pump
Page Object Model library for Crystal. A port (kind of) of Ruby's WatirPump -
hashr
Hashr is a tiny library makes test on JSON response easier, and can also be used as a models object.
WorkOS - The modern identity platform for B2B SaaS
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.