Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Inversion of Control in Javascript

Inversion of Control in Javascript

Avatar for Michael Yockey

Michael Yockey

April 19, 2017

More Decks by Michael Yockey

Other Decks in Programming

Transcript

  1. export const search = (keyword) => { const repo =

    new Repo(); return repo.find((record) => { return !!record.text.match(keyword); }); }
  2. import { search } from ‘./search’; app.get(“/search”, req, res) {

    const keyword = req.params.keyword; const record = search(keyword); res.send(record); }
  3. import { search } from ‘./search’; describe(‘search’, () => {

    it(‘returns a record’,() => { const actual = search(‘test’); assert.ok(actual); }); });
  4. import { search } from ‘./search’; describe(‘search’, () => {

    it(‘returns a record’,() => { const actual = search(‘test’); // error! assert.ok(actual); }); });
  5. export const search = (keyword) => { const repo =

    new Repo(); return repo.find((record) => { return !!record.text.match(keyword); }); }
  6. export const search = (keyword, repo) => { return repo.find((record)

    => { return !!record.text.match(keyword); }); }
  7. import { search } from ‘./search’; class DummyRepo { find(callback)

    { return ‘ok’; } } describe(‘search’,() => { it(‘returns a record’,() => { const actual = search(‘test’, new DummyRepo); assert.ok(actual); }); });