1.0.2 • Published 4 years ago

simple-stub v1.0.2

Weekly downloads
11
License
MIT
Repository
github
Last release
4 years ago

simple-stub

To simply make stubs out of simple javascript objects. Use this stubs for testing in your favorite testing setup.

How to use

Install with:

npm i simple-stub --save-dev

To create a stub object, create a object and call .createStub() with it as argument.

    const simpleStub = require('simple-stub');

    const obj = {
      f: a => a + 5,
    };

    const stubObj = simpleStub.createStub(obj);

If you now call stubObj.f(1) it will behave like obj.f(1) and return 6. The stub object will also save an array with "Call-Objects" for each function call which looks like this:

[{
  "args": [1],
  "err": undefined,
  "result": 6
}]

These "Call-Objects"-Arrays can be found under the path stubObj.calls.{function}.

After you made your calls you can use this data to make your assertions with your favorite library:

  it('calls the function 3 times with 1 2 and 3', () => {
    const obj = {
      f: a => a + 5,
    };

    const stubObj = simpleStub.createStub(obj);

    stubObj.f(1);
    stubObj.f(2);
    stubObj.f(3);

    expect(stubObj.calls.f.length).to.equal(3);
    expect(stubObj.calls.f[0].args[0]).to.equal(1);
    expect(stubObj.calls.f[0].result).to.equal(6);
    expect(stubObj.calls.f[1].args[0]).to.equal(2);
    expect(stubObj.calls.f[1].result).to.equal(7);
    expect(stubObj.calls.f[2].args[0]).to.equal(3);
    expect(stubObj.calls.f[2].result).to.equal(8);
  });

That's it.

Advanced

If your stub object needs a function named calls. You can provide an options object to rename the stub objects build-in calls function.

    const obj = {
      f: a => a + 5,
    };

    const stubObj = simpleStub.createStub(obj, {
      renameCalls: 'myCalls'
    });

    stubObj.f(1);

    console.log(`Call number is ${stubObj.myCalls.f.length}.`);
    // Prints: Call number is 1.

Limitations

1) You can not have deeply nested functions yet. Your functions need to be on the top level.

    //will NOT work!
    const obj = {
      g: {
        f: a => a + 5,
      },
    };
    //NOPE!
    const stubObj = simpleStub.createStub(obj);
1.0.2

4 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.1.3

6 years ago

0.1.2

6 years ago

0.1.1

6 years ago