make spy decorator

This commit is contained in:
Leo Horie 2016-08-30 14:05:53 -04:00
parent 32fed2dd88
commit f0888ac7bd
2 changed files with 26 additions and 4 deletions

View file

@ -4,7 +4,7 @@
Noiseless testing framework Noiseless testing framework
Version: 1.0 Version: 1.1
License: MIT License: MIT
## About ## About
@ -117,6 +117,29 @@ o.spec("call()", function() {
}) })
``` ```
A spy can also wrap other functions, like a decorator:
```javascript
//code to be tested
var count = 0
function inc() {
count++
}
//test suite
var o = require("ospec")
o.spec("call()", function() {
o("works", function() {
var spy = o.spy(inc)
spy()
o(count).equals(1)
})
})
```
### Asynchronous tests ### Asynchronous tests
If a test body function declares a named argument, the test is assumed to be asynchronous, and the argument is a function that must be called exactly one time to signal that the test has completed. As a matter of convention, this argument is typically named `done`. If a test body function declares a named argument, the test is assumed to be asynchronous, and the argument is a function that must be called exactly one time to signal that the test has completed. As a matter of convention, this argument is typically named `done`.
@ -336,7 +359,7 @@ Declares that only a single test should be run, instead of all of them
--- ---
### Function o.spy() ### Function o.spy([Function fn])
Returns a function that records the number of times it gets called, and its arguments Returns a function that records the number of times it gets called, and its arguments

View file

@ -25,8 +25,7 @@ module.exports = new function init() {
spy.args = [].slice.call(arguments) spy.args = [].slice.call(arguments)
spy.callCount++ spy.callCount++
if(fn) if (fn) return fn.apply(this, arguments)
return fn.apply(this, arguments)
} }
spy.args = [] spy.args = []
spy.callCount = 0 spy.callCount = 0