npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

macchiato

v4.6.0

Published

Mocha styled tape with sinon

Downloads

117

Readme

Macchiato

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]

Usage

A New Way To Write Tests!

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()
})

Classic way to write tests

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()
    })
  })
})

Version 2.*

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

Licence

MIT