Sinon: рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд░реЛрдХрдирд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 16 рдирд╡ре░ 2017  ┬╖  2рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sinonjs/sinon

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 : рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдмрдВрдж рд╣реЛ рдЧрдпрд╛ред
рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рд╕рднреА 2 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Sinon.JS рд╕реНрд╡рдпрдВ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдХрд╛рд░рдг рдЬреЛ рдЖрддреЗ рд░рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдкреНрд░рдмрдВрдзрдХ рднреА рдЬреАрд╡рди рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдХреЙрдордирдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рд╕реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдореБрджреНрджреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдкреНрд░рдмрдВрдзрдиреАрдп рд░рдЦрдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХрд░реЗрдВ рдФрд░ Sinon.JS рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЗрд▓рд┐рдВрдЧрд▓рд┐рд╕реНрдЯ рдпрд╛ StackOverflow рдкрд░ рдЙрдкрдпреЛрдЧ рд╕рдВрдмрдВрдзреА рдкреНрд░рд╢реНрди рдкреВрдЫреЗрдВред рджреЛрдиреЛрдВ рдЕрдЪреНрдЫреЗ рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ рдЬрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╡реНрдпрд╛рдкрдХ рджрд░реНрд╢рдХ рд╕рд╣рд╛рдпрддрд╛ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@sebakerckhof рдЗрд╕реЗ рдЪреЗрдХрдЖрдЙрдЯ рдХрд░реЗрдВ https://github.com/sinonjs/sinon/issues/562#issuecomment -399090111

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

fearphage picture fearphage  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

akdor1154 picture akdor1154  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stephanwlee picture stephanwlee  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

fearphage picture fearphage  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stevenmusumeche picture stevenmusumeche  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ