SpeckJS is an npm module that parses JavaScript and outputs unit-tests. SpeckJS currently supports the Tape, Jasmine, and Mocha/Chai testing frameworks. Along with our Atom plugin, we have plugins available for Grunt, Gulp, as well as a standalone npm package.
Our goal with SpeckJS is to make it as easy as possible to get started using Test-Driven Development on a new project, to quickly add unit-tests to your existing project, or anywhere in between. We know the value of well-tested code, and SpeckJS is here to make that simpler than ever.
Open Atom's Settings and navigate to the Install
view.
For easy access, use Atom's command palette: cmd-shift-p
(OSX) or ctrl-shift-p
(Linux/Windows)
and search for Settings View: Install Packages and Themes
.
In the text field under Install Packages
, make sure the Packages
tab is selected.
Now, simply search for speckjs
, click install
, and you're all set!
The first line of a SpeckJS comment is the title
, describing your test block.
// test > sum function
Next, use SpeckJS' domain-specific language (DSL) to create an assertion of what you wish to test. Here's the format of the DSL:
// # <actual> <assertion-type> <expected> (<description>)
You can add as many (or as few) assertions as you'd like.
// # sum(1, 2) == 3 (returns the sum of both params)
// # sum(3, 4) == 7 (returns the sum of both params)
That's it! Here's a complete SpeckJS comment for the simple sum function:
// test > sum function
// # sum(1, 2) == 3 (returns the sum of both params)
// # sum(3, 4) == 7 (returns the sum of both params)
Comments can also be written using block style comments:
/*
test > sum function
# sum(1, 2) == 3 (returns the sum of both params)
# sum(3, 4) == 7 (returns the sum of both params)
*/
We offer several easy ways to use SpeckJS in Atom.
-
Use the hotkey:
ctrl-alt-s
By default, SpeckJS will build your test files using the Tape framework, but you can change this in the options. Here, we'll update our settings to build Jasmine tests, instead:
These are the assertion types currently supported, and you can extend this list to include others in parsing/comment-conversion.js
.
== : equal
=== : deep equal
!== : not equal
!=== : not deep equal
SpeckJS is also available as a plugin for the following platforms: