É um caso de uso comum simular módulos ES.
por exemplo, eu tenho um módulo que importa 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);
// ..
}
Em meu teste, quero simular getEventByEventId, por exemplo
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.');
});
Isso foi perguntado antes aqui: https://github.com/sinonjs/sinon/issues/1358 . Mas isso foi totalmente fechado como uma duplicata de: https://github.com/sinonjs/sinon/issues/1121 , embora seja um problema totalmente diferente.
Isso já foi mencionado naquela edição, mas parece que não está mais sendo tratado.
Sinon.JS não se preocupa com sistemas de módulos. Estou fechando isso.
Por causa dos muitos pedidos que continuam chegando, e porque os administradores do projeto também escrevem testes para ganhar a vida, publicamos How To Use Link Seams With CommonJS .
Ajude-nos a manter a lista de problemas gerenciável e faça perguntas sobre o uso na lista de discussão dos usuários do StackOverflow . Ambos são bons recursos onde um público mais amplo de usuários pode oferecer ajuda.
@sebakerckhof verifique este https://github.com/sinonjs/sinon/issues/562#issuecomment -399090111