Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/haraldrudell/mochawrapper
Easy testing and coverage reporting simplifying mocha by Harald Rudell
https://github.com/haraldrudell/mochawrapper
Last synced: 1 day ago
JSON representation
Easy testing and coverage reporting simplifying mocha by Harald Rudell
- Host: GitHub
- URL: https://github.com/haraldrudell/mochawrapper
- Owner: haraldrudell
- Created: 2012-08-21T22:26:39.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2013-01-07T03:38:32.000Z (almost 12 years ago)
- Last Synced: 2024-11-11T03:03:03.438Z (8 days ago)
- Language: JavaScript
- Homepage:
- Size: 173 KB
- Stars: 16
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Mocha Wrapper
The [Mocha Wrapper](https://github.com/haraldrudell/mochawrapper) module makes testing with mocha and assert very easy.
## Benefits
1. Find untested code via the **code coverage** report
2. Get **Immediate feedback** by rerunning tests as you save
3. Run **smoke test** before code push `npm test` to avoid bad pushes
4. Get testing immediately using **One liner**## Features
1. Ability to run **coverage tests** anytime without code changes
2. **Package consistency** test looks for frequently forgotten items
3. Automated **adding of mocha** to your project
4. Enhanced **assertion printouts** with message, actual and expected values
5. **Abbreviated stack traces** compared to the underlying framework
6. **Resilience** against syntax issues in test files## Add to my project NOW
**Simply add mocha :)**
```js
npm install mochawrapper; node_modules/.bin/addmocha; npm test
``````
> [email protected] test /home/foxyboy/Desktop/c505/node/mochawrapper
> mocha --ui exports --reporter spec
...
```The `addmocha` command updates .gitignore, package.json and the test folder in a safe manner so testing can start immediately from a single dependency.
Imagine yourself, at blood, toil, tears and sweat, supported by the sweet mocha every time you save your work:
```js
npm run-script monitor
``````
debugger:1 found in 'lib/passportwrapper.js'
Files checked for syntax: javascript:27, json:1 in 0.1 s✔ 8 tests complete (150ms)
◡ watching
```## SHOW ME RIGHT, RIGHT NOW
A project using mochawrapper is [tagfinder](https://github.com/haraldrudell/tagfinder):
```
git clone https://github.com/haraldrudell/tagfinder
cd tagfinder
npm installnpm test
npm run-script coverage
```The system’s browser displays the test coverage report for tagfinder.
## Automatic Coverage Report
`npm run-script coverage` displays a test coverage report by opening a tab or window in the system’s browser. There is no need to modify any code to run coverage, and you can continuously use it as a guide for further areas to test.
# Reference
## Continuous Testing
`npm run-script monitor` continuously displays current test results and rerun the tests as you save your sourcefiles.
## Test Everything
`npm test` runs all the tests in the test folder.
## Debug Tests
`npm run-script debugtest` runs all tests using the debugger. By inserting JavaScript’s debugger statement at strategic locations you can run to the exact location where there is something funky going on.
## Coverage Report
```
npm run-script coveragemochacoverage Preparing an automated test coverage report
mochacoverage Invoking jsCoverage
mochacoverage Running tests
Files checked for syntax: javascript:9, json:1 in 0.1 s
mochacoverage Preparing report
mochacoverage Launching browser
mochacoverage Complete
```This does coverage analysis of JavaScript files in the project's lib folder. When complete, Mocha Wrapper launches a new tab in the system default browser containing JavaScript source code. Lines marked red were not executed.
The report can also be invoke using `node_modules/.bin/mochacoverage` or simply `mochacoverage` if you have updated your PATH. For both of these methods, you can add a top-level folder other than `lib`.
## Getting jscoverage
The [jsCoverage](http://siliconforks.com/jscoverage/) command is required.
```
jscoverage --version
jscoverage 0.5.1
```* Linux has a jscoverage package: `sudo apt-get install jscoverage`
* Windows: [jsCoverage](http://siliconforks.com/jscoverage/) site has zip to download
* Mac: `sudo macports install jscoverage`
* There is a [github node-jscoverage](https://github.com/visionmedia/node-jscoverage) if you have a C compiler installed.## Regular Test Output
```
npm test> [email protected] test /home/foxyboy/Desktop/c505/node/tf
> mocha --ui exports --reporter specEmpty Markup
✓ Can compile undefined
✓ Can compile empty stringParsing
✓ Can remove html comments
✓ Can find opening tags
✓ Empty attributes
✓ Unquoted attributes
✓ Quoted attributes
✓ Unescaped content: script and textarea
✓ Closing tag in unescaped content
✓ MathML
✓ cdata section
✓ svgPackage Consistency:
◦ Proper JavaScript and json syntax: Files checked for syntax: javascript:3, json:1 in 0.1 s
✓ Proper JavaScript and json syntax (87ms)
✓ Package descriptor file
✓ git ignore declaration
✓ Readme✔ 16 tests complete (102ms)
```## Tip
Add `node_modules/.bin` to your PATH environment variable to run executable scripts from your modules.
# Test Examples
Here are two tests from a test suite. The first test is regular code, and the second test features a callback.
```js
var assert = require('mochawrapper')exports['Array Length:'] = {
'array.length returns a number': function () {
var expected = 'number'
var actual = typeof [].length
assert.equal(actual, expected)
},
'Testing with callback (asynchronous)': function (done) {
setTimeout(completeWhenThisExecutes, 100)
console.log('background complete')
function completeWhenThisExecutes() {
console.log('finishing test')
done()
}
}
}
```
Save the tests as a .js file in the project's test folder.```
npm test> [email protected] test /home/foxyboy/Desktop/c505/node/cloudclearing
> mocha --ui exports --reporter specArray Length:
✓ array.length returns a number
◦ Testing with callback (asynchronous): background complete
finishing test
✓ Testing with callback (asynchronous) (111ms)Package Consistency:
◦ Proper JavaScript and json syntax: Files checked for syntax: javascript:16, json:1 in 0.1 s
✓ Proper JavaScript and json syntax (79ms)
✓ Package descriptor file
✓ git ignore declaration
✓ Readme✔ 7 tests complete (198ms)
```# Notes
© [Harald Rudell](http://www.haraldrudell.com) wrote mochawrapper for node in August, 2012
* Mochawrapper wraps and extends **mocha**, a testing framework by [TJ Holowaychuk ](http://tjholowaychuk.com/)
No warranty expressed or implied. Use at your own risk.
Please suggest better ways, new features, and possible difficulties on [github](https://github.com/haraldrudell/mochawrapper)