Testing should be easy! 🏄♀️
Let's get a Javascript test suite running in 30 seconds. Here's what test results will look like in our console:
multipleTermsTest: 0.79 ms ok
decimalTermsTest: 0.04 ms ok
negativeTermsTest: 0.03 ms ok
nonNumericTermsTest: 0.21 ms ok
testSuite: 3.19 ms ok
Step 1: ☝️
Create a module that you'd like to conduct tests on.
We'll use an addition module that adds numbers together, and name it addition.js
.
// addition.jsmoduleexports { return terms}
Step 2: ✌️
Introduce a test module that imports addition.js
, called addition.test.js
.
Writing tests is extremely simple, because there's only two rules to follow:
- A "test" is any function, that will throw an
Error
object to indicate failure. - All test modules, like
addition.test.js
should export an Array of test functions, namedtests
. Easy right?
// addition.test.jsconst addition = { if !== 15 throw 'Addition with multiple terms must work'} { if !== 625 throw 'Addition with decimal numbers must work'} { if !== 0 throw 'Addition with negative numbers must work'} { // We can use the assert module if we'd like const assert = assert} moduleexportstests = multipleTermsTest decimalTermsTest negativeTermsTest nonNumericTermsTest
Step 3: 🤟
Add test.js
, which will be an entrypoint for the entire test suite.
Pass any number of modules into testSuite()
, and use node test.js
to kick things off.
// test.jsconst run testSuite = ; ;
Why Waverunner? 🧠
- All tests run top-to-bottom in the order they're included.
- Nothing runs without your explicit say so.
- No extra abstraction layers to learn. Just throw an Error.