td-chain

1.0.1 • Public • Published

🔗 td-chain

If you use testdouble.js, you might have run into a bit of difficulty mocking chained APIs. In most cases, you should probably just avoid the problem. If you're sure you want to do this, td-chain should help a little.

Installation

npm install td-chain

Usage

Say you have a module ./test/subject that calls ./my/api like this:

module.exports = function subject() {
  return api('some args')
    .next('more args')
    .another('something else') // returns 42
}

You can mock out the call to api() like this:

const td = require('testdouble')
const chain = require('td-chain')
 
const api = td.replace('./my/api')
const result = Symbol()
 
td.when(
  chain(api)('some args')
    .next('more args')
    .another('something else')
).thenReturn(result)
 
const subject = require('./test/subject')
 
assert(subject() === result)

For comparison, without td-chain:

const td = require('testdouble')
 
const api = td.replace('./my/api')
const td2 = td.function()
const td3 = td.function()
 
const result = Symbol()
 
td.when(api('some args'))
  .thenReturn({ next: td2 })
 
td.when(td2('more args'))
  .thenReturn({ another: td3 })
 
td.when(td3('something else'))
  .thenReturn(result)
 
const subject = require('./test/subject')
 
assert(subject() === result)

Readme

Keywords

Package Sidebar

Install

npm i td-chain

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

3.88 kB

Total Files

3

Last publish

Collaborators

  • cbnz