Sinon: Stubbing von standardmäßig exportierten Funktionen

Erstellt am 16. Nov. 2017  ·  2Kommentare  ·  Quelle: sinonjs/sinon

Es ist ein häufiger Anwendungsfall, ES-Module zu verspotten.

zB habe ich ein Modul, das getEventByEventId importiert

import getEventByEventId from '../queries/getEventByEventId';

export default async (
  {
    connection,
    session
  }: ResolverContextType
) => {
  if (!session || !session.userId) {
    throw new Error('User must be authenticated.');
  }

  const event = await getEventByEventId(connection, eventId);

  // ..
}

In meinem Test möchte ich getEventByEventId verspotten, zB

import test from 'ava';
import sinon from 'sinon';
import moment from 'moment';
import createReservation from '../../../src/mutators/createReservation';

test('throws an error if the event is in the past', async (t) => {
  const parameters: any = {};

  const context: any = {
    session: {
      userId: 1
    }
  };

  const stub = sinon.stub().returns({
    date: moment().format('YYYY-MM-DD'),
    time: moment(new Date().getTime() - 1000 * 60).format('HH:mm')
  });

  // How to use the stub to mock `getEventByEventId`?

  await t.throws(createReservation(context), 'Cannot create a reservation for a past event.');
});

Das wurde schon mal hier gefragt: https://github.com/sinonjs/sinon/issues/1358 . Aber dies wurde zu Unrecht als Duplikat von: https://github.com/sinonjs/sinon/issues/1121 geschlossen , während es sich um ein völlig anderes Problem handelt.
Dies wurde bereits in dieser Ausgabe erwähnt, scheint aber nicht mehr gepflegt zu werden.

ES2015+

Alle 2 Kommentare

Sinon.JS beschäftigt sich nicht mit Modulsystemen. Ich schließe das.

Aufgrund der vielen Anfragen, die immer wieder eingehen und die Stewards des Projekts auch Tests für ihren Lebensunterhalt schreiben, haben wir How To Use Link Seams With CommonJS veröffentlicht .

Bitte helfen Sie uns, die Problemliste überschaubar zu halten und stellen Sie Fragen zur Nutzung über die StackOverflow . Beides sind gute Ressourcen, bei denen ein breiteres Benutzerpublikum Hilfe anbieten kann.

@sebakerckhof Checkout this https://github.com/sinonjs/sinon/issues/562#issuecomment -399090111

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen