The tiniest unit tester, ported to Ruby
- Cake will search for anything that has .cake.rb for the file name in the directory that it's run in
- Example of how to write unit tests:
require_relative 'cake'
TestRunner.new('Test Runner - Basic', [
Group.new('Group Basic', [
Test.new(
'True should be true',
action: ->(test) {
value = 'foo'
test.actual = value
test.expected = value
},
assertions: ->(test) { [Expect::Equals.new(actual: test.actual, expected: test.expected)] }
)
])
])
You can also pass variables from parents and test stages.
Group.new('Groups can assign context', [
Test.new(
'Group can pass context to children',
assertions: ->(test) { [Expect::Equals.new(actual: test.foo, expected: 'bar')] }
),
Test.new(
'Children can override parent context',
action: ->(test) { test.foo = 'baz' },
assertions: ->(test) { [Expect::Equals.new(actual: test.foo, expected: 'baz')] }
)
], setup: ->(test) {
test.foo = 'bar'
}),
- Equals
- IsNotEqual
- IsNil
- IsNotNil
- IsTrue
- IsFalse
- RespondTo
- Undefined
- DoesNotRespondTo (synonym for Undefined)
- The package will need to run globally. Install via this command:
gem install cake-tester
- After it's installed, you can run it by using
cake-tester
in the directory that you want to run your tests in. It will search any files in the directory or any sub-folders ending withcake.rb
. - You can also add flags to run specific tests or view output from specific tests.
-f [fileName]
- Filters tests based off of file name
- EX:
cake-tester -f foo
will test 'test-foo.cake.rb'
-v
or--verbose
- Displays full output of summary and tests run
-t [testFilter]
,--tt [testFilter]
,--tte [testName]
,--tg [groupFilter]
,--tge [groupName]
,--tr [testRunnerFilter]
,--tre [testRunnerName]
- All of these do similar things, which filters based off of title of the item. You can also use certain tags to run only a group, test runner, or a specific test.
- Note - search is case-sensitive.
- Examples:
-t
General search:ruby cake-tester -t foo
- Run all tests, groups, and runners with "foo" in the title--tt
Test searchruby cake-tester --tt "cool test"
- Run all tests with the phrase "cool test" in the title--tte
Test search, exact:ruby cake-tester --tte "should only run when this one specific thing happens"
- Runs only the test that matches the phrase exactly.--tg
Group searchruby cake-tester --tg bar
- Run all groups matching "bar" in the title--tge
Group search, exact: `ruby cake-tester --tge "API Endpoints" - Runs all groups exactly matching the phrase "API Endpoints"--tr
Test Runner search: `ruby cake-tester --tr "Models" - Runs all test runners with "Models" in the title--tre
Test Runner search, exact:ruby cake-tester --tre "Models - User"
- Runs test runners that exactly match the phrase "Models - User"
-i
- Allows for repeatedly running tests. You can also use the test filters similar to non-interactive mode's syntax.
- Note this is not yet implemented with this version.