lundi 19 décembre 2016

SinonJS spy on SDK calls

I'm currently implementing a service that makes use of the Intercom SDK. I'm trying to unit test my service by stubbing out the SDK so I'm sure it's being called correctly from my code.

The implementation looks like this:

export default (eventType, payload) => {
  const intercom = getClient();


  switch (eventType) {
    case 'Foo':
      intercom.users.create(payload);
      break;
    case 'Baz':
      intercom.users.update(payload);
      break;
    default: return null;
  }

In my unit test I'm doing:

describe.only('Dispatch event service', () => {    
  it('Should pass payload to Intercom', async () => {
    const clientSpy = sinon.spy(Intercom, 'Client');

    dispatchEvent('Foo', { baz: 'foo' });

    assert.isTrue(clientSpy.users.create.isCalled);
    assert.deepEqual(clientSpy.users.create.args[0], {
      baz: 'foo',
    });
  });
});

How am I able to stub the Intercom Client so I can check which method is being called?

Aucun commentaire:

Enregistrer un commentaire