chai-callslike
Version:
A simple sinon-chai assertion to validate many aspects of stub calls
70 lines (47 loc) • 2.32 kB
Markdown
# chai-callslike



[](https://codeclimate.com/github/Codibre/chai-callslike/test_coverage)
[](https://codeclimate.com/github/Codibre/chai-callslike/maintainability)
[](https://david-dm.org/Codibre/chai-callslike)
[](https://badge.fury.io/js/chai-callslike)
A simple assertion to validate many aspects of stub calls. It is supposed to use with sinon + chai.
## How it works
### expect(stub).callsLike
Will validate the exactly interaction with the mocked method, which is:
- How many times has been called;
- Which parameters have been passed to it;
- In what order the calls happened.
## How to use?
It is pretty simple to setup the chai-callslike in your tests:
```javascript
import chai from 'chai'
import {callsLike} from 'chai-callslike'
chai.use(callsLike)
```
Just pass the stub in the first parameter and, in the others, arrays with the set of parameters each calls had received.
```javascript
expect(myStub).callsLike(
['param1call1', 'param2call1', 'param3call1'],
['param1call2', 'param2call2', 'param3call2'],
);
```
If you want to check if the stub had never been called, pass just the stub:
```javascript
expect(myStub).callsLike();
```
If you expect the stub to have been called with no parameters, pass empty arrays:
```javascript
expect(myStub).callsLike([], [], [])
```
_(in this example, myStub have been called three times with no parameters)_
You can also use sinon matchers to validate the parameters instead of exact values:
```javascript
expect(myStub).callsLike(
[sinon.match.object, sinon.match.string, sinon.match(/.+foo.+goo/)]
);
```
The generated log will look pretty as this:

For more info look into the [Full API Reference](./docs/README.md).