Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

expresso

Package Overview
Dependencies
Maintainers
0
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

expresso

TDD framework, light-weight, fast, CI-friendly

  • 0.1.0
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Expresso

TDD framework for nodejs.

Expresso is a 1-hour creation, for TDD and nodejs. I was frustrated with what was currently available, I wanted something fast (not executed serially), with reasonable reporting, drop-dead simple async support (you dont have to do anything!), and code coverage.

Features

  • intuitive async support
  • intuitive test runner executable
  • test coverage support and reporting
  • uses the assert module
  • light-weight

Installation

To install both expresso and node-jscoverage run:

$ make install

To install expresso alone (no build required) run:

$ make install-expresso

Install via kiwi:

$ kiwi install expresso

Examples

To define tests we simply export several functions:

module.exports = {
  	'test String#length': function(assert){
    	assert.equal(6, 'foobar');
  	}
}

Async example:

exports['test async] = function(assert, beforeExit){
	var n = 0;
  	setTimeout(function(){
    	++n;
    	assert.ok(true);
  	}, 200);
  	setTimeout(function(){
    	++n;
    	assert.ok(true);
  	}, 200);
	beforeExit(function(){
		assert.equal(2, n, 'Ensure both timeouts are called');
	});
}

Executable Usage

To run a single test suite (file) run:

$ expresso test/a.test.js

To run several suites we may simply append another:

$ expresso test/a.test.js test/b.test.js

Globbing is of course possible as well:

$ expresso test/*

When expresso is called without any files, test/* is the default, so the following is equivalent to the command above:

$ expresso

If you wish to unshift a path to require.paths before running tests, you may use the -I or --include flag.

$ expresso --include lib test/*

The previous example is typically what I would recommend, since expresso supports test coverage via node-jscoverage (bundled with expresso), so you will need to expose an instrumented version of you library.

To instrument your library, simply run node-jscoverage, passing the src and dest directories:

$ node-jscoverage lib lib-cov

Now we can run our tests again, using the lib-cov directory that has been instrumented with coverage statements:

$ expresso -I lib-cov test/*

The output will look similar to below, depending on your test coverage of course :)

Test Coverage
+--------------------------------+----------+------+------+--------+
| filename                       | coverage | LOC  | SLOC | missed |
+--------------------------------+----------+------+------+--------+
| a.js                           |    90.00 |   26 |   10 |      1 |
| b.js                           |   100.00 |   12 |    5 |      0 |
+--------------------------------+----------+------+------+--------+
                                 |    93.33 |   38 |   15 |      1 |
                                 +----------+------+------+--------+

To make this process easier expresso has the -c or --cov which essentiall does the same as the two commands above. The following two commands will run the same tests, however one will auto-instrument, and unshift lib-cov, and the other will run tests normally:

$ expresso -I lib test/*
$ expresso -I lib --cov test/*

Currently coverage is bound to the lib directory, however in the future --cov will most likely accept a path.

FAQs

Package last updated on 28 Dec 2010

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc