C'est un cas d'utilisation courant pour se moquer des modules ES.
par exemple, j'ai un module qui importe getEventByEventId
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);
// ..
}
Dans mon test, je veux me moquer de getEventByEventId, par exemple
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.');
});
Cela a déjà été demandé ici : https://github.com/sinonjs/sinon/issues/1358 . Mais cela a été fermé à tort comme un doublon de : https://github.com/sinonjs/sinon/issues/1121 , alors qu'il s'agit d'un problème totalement différent.
Cela a déjà été mentionné dans ce numéro, mais il ne semble plus être pris en charge.
Sinon.JS ne s'occupe pas des systèmes de modules. Je ferme ceci.
En raison des nombreuses demandes qui continuent d'affluer et du fait que les responsables du projet écrivent également des tests pour gagner leur vie, nous avons publié How To Use Link Seams With CommonJS .
S'il vous plaît, aidez-nous à garder la liste des problèmes gérable et posez des questions d'utilisation sur la liste de diffusion des utilisateurs Sinon.JS ou StackOverflow . Les deux sont de bonnes ressources où un public plus large d'utilisateurs peut offrir de l'aide.
@sebakerckhof vérifier ceci https://github.com/sinonjs/sinon/issues/562#issuecomment -399090111