ΠΡΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΈΠΌΠΈΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ES.
Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ 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);
// ..
}
Π ΡΠ²ΠΎΠ΅ΠΌ ΡΠ΅ΡΡΠ΅ Ρ Ρ ΠΎΡΡ ΠΈΠΌΠΈΡΠΈΡΠΎΠ²Π°ΡΡ getEventByEventId, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
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.');
});
ΠΠ± ΡΡΠΎΠΌ ΡΠ°Π½ΡΡΠ΅ ΡΠΏΡΠ°ΡΠΈΠ²Π°Π»ΠΈ Π·Π΄Π΅ΡΡ: https://github.com/sinonjs/sinon/issues/1358 . ΠΠΎ ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅Π·Π°ΠΊΠΎΠ½Π½ΠΎ Π·Π°ΠΊΡΡΡΠΎ ΠΊΠ°ΠΊ Π΄ΡΠ±Π»ΠΈΠΊΠ°Ρ: https://github.com/sinonjs/sinon/issues/1121 , Ρ
ΠΎΡΡ ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΠ± ΡΡΠΎΠΌ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² ΡΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅, Π½ΠΎ, ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΠΎ Π½Π΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π·Π°Π±ΠΎΡΡΡΡΡ.
Sinon.JS Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ. Π― Π·Π°ΠΊΡΡΠ²Π°Ρ ΡΡΠΎ.
ΠΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ·-Π·Π° ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΈΡΡΡ ΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ Π·Π°ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ΅Π±Π΅ Π½Π° ΠΆΠΈΠ·Π½Ρ, ΠΌΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ Β« ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²Ρ ΡΡΡΠ»ΠΎΠΊ Ρ CommonJSΒ» .
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΠΎΠΌΠΎΠ³ΠΈΡΠ΅ Π½Π°ΠΌ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π·Π°Π΄Π°Π²Π°ΠΉΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² StackOverflow . ΠΠ±Π° ΡΠ²Π»ΡΡΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ, Π³Π΄Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠ°Ρ Π°ΡΠ΄ΠΈΡΠΎΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΏΠΎΠΌΠΎΡΡ.
@sebakerckhof ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ https://github.com/sinonjs/sinon/issues/562#issuecomment -399090111