0.0
The project is in a healthy, maintained state
The lightweight, explicit testing framework for Ruby.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Cake

The tiniest unit tester, ported to Ruby

How to write unit tests

  • 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'
  }),

Expect Matches

  • Equals
  • IsNotEqual
  • IsNil
  • IsNotNil
  • IsTrue
  • IsFalse
  • RespondTo
  • Undefined
  • DoesNotRespondTo (synonym for Undefined)

How to run the test runner

  • 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 with cake.rb.
  • You can also add flags to run specific tests or view output from specific tests.

Flags

File name filter

  • -f [fileName]
    • Filters tests based off of file name
    • EX: cake-tester -f foo will test 'test-foo.cake.rb'

Verbose mode

  • -v or --verbose
    • Displays full output of summary and tests run

Test Filter

  • -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 search ruby 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 search ruby 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"

Interactive mode

  • -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.