Install:
$ npm install --save-dev macchiato
and globally:
$ npm install -g macchiato
A Mocha / Jasmine themed testing framework, comes equiped with a built in assertion library (Certain).
Each of the test contexts have various assert methods added to them which call certain
under
the hood for ease of use. In addition to this each of the test contexts are instanciated sinon sandbox's!
var describe = require('macchiato')({[options]})
// or
var describe = require('macchiato')
Once you've written your tests you can run them like this:
$ macchiato [-options] test/*.js
# or
$ node test/my-file.js [-options]
describe('my test')
.beforeEach(function () {
// sinon is baked in to the test context
// and passed into all `beforeEach` and
// `afterEach` callbacks. All spys/stubs
// are restored after each test.
this.myStub = this.stub()
})
.it('should do amazing things', function (t) {
// the test context can be accessed as the first
// arguments to the test callback
t.equals('tape assertions are also baked into the framework', true)
t.end()
})
.it('should do another thing', function () {
// the test context is also `this` in the test callback
this.assert(true, 'this test is asserting something')
this.done()
})
describe('my test', function () {
describe.beforeEach(function () {
// sinon is baked in to the test context
// and passed into all `beforeEach` and
// `afterEach` callbacks. All spys/stubs
// are restored after each test.
this.myStub = this.stub()
})
describe.it('should do amazing things', function (t) {
// the test context can be accessed as the first
// arguments to the test callback
t.equals('assertions are also baked into the framework', true)
t.end()
})
describe('my subtest', function () {
descibe.it('should do something interesting', function () {
// the test context is also `this` in the test callback
this.assert(true, 'this test is asserting something')
this.done()
})
})
})
The original version of macchiato
was build ontop of the testing framework Tape.
This is undoubtable an awesome testing framework, the problem was that when changes were
needed to tweak the inner workings of Macchiato
this was very difficult since all of the main
design decisions had been made inside of Tape. I don't think Tape had really been build to accomodate that kind of abuse!
In v2
this dependency has been completely removed. Macchiato now has it's own test runner.
This has made it much easier to manage and very modular, which means that in the future when features are added (to analyse test methods execution etc.) this will be a lot easier and also creates a lot of possibilies.
Macchiato used to only output TAP (Test Anywhere Protocol), this has now changed.
Macchiato has it's own output which is a lot like the -R spec
option this is the default console output.
To change this output you can specify it as an option:
Javascript:
describe({ output: 'tap' })
Terminal:
$ macchiato -o tap test/*.js
More documentation coming soon...
MIT