Sinon: рд╕реНрдЯрдмрд┐рдВрдЧ рд╕реЗрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рддрддреНрдХрд╛рд▓ рдЕрд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬрдире░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sinonjs/sinon

рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рд╕реАрдПрд╕рд╡реА рд▓реЗрдЦрди рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реЛ рдЧрдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ setImmediate рдХреЙрд▓ рдерд╛ рдЬреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд░рд╣рд╛ рдерд╛: https://github.com/C2FO/fast-csv/blob/master/lib/extended.js#L18

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЕрд╣рд╛рдирд┐рдХрд░ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП setImmediate рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ setImmediate рдХрд╛ рдвреЛрдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдЙрди рд╕рднреА рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:

рд╢рд╛рдпрдж рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рд╕реАрдПрд╕рд╡реА рд▓реЗрдЦрди рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ ctrl+c рд╣рд┐рдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖред рдХреЛрдб рдХрд╛ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдлреНрд░реАрдЬ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдпрд╣ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдФрд░ рдлрд┐рд░ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 90 рдорд┐рдирдЯ рд▓рдЧ рдЧрдП рдХрд┐ рд╕рд┐рдиреЙрди рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреНрдпреЛрдВ рдерд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдиреЗ setImmediate рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдХрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИ рдЬрд┐рд╕реЗ рдЙрд▓рдЭрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд░ рдЬрд╡рд╛рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ useFakeTimers(0, "Date") рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА/рд▓реЛрдЧреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реЛ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдпрд╣ рд░реВрдк рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирдХрд▓реА рд╣реИрдВ:

var clock = sinon.useFakeTimers([now, ]prop1, prop2, ...);

Sets the clock start timestamp and names functions to fake.

Possible functions are setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate and Date. Can also be called without the timestamp.

рддреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреА:

clock = sinon.useFakeTimers(1495020000, 'Date');

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

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдиреЗ рд╕реЗрдЯрдЗрдореАрдбрд┐рдПрдЯ рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдХрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИ рдЬрд┐рд╕реЗ рдЙрд▓рдЭрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

https://github.com/taylorhakes/promise-polyfill/pull/15

рд╣рд╛рдВ, рдореИрдВрдиреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдЗрд╕рдХрд╛ рдирд┐рджрд╛рди рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЕрднреА 90 рдорд┐рдирдЯ рдмрд┐рддрд╛рдП рд╣реИрдВред

рдХрдо рд╕реЗ рдХрдо, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕реЗрдЯ рддрддреНрдХрд╛рд▓ рдирдХрд▓реА рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдпрд╣ рд░реВрдк рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирдХрд▓реА рд╣реИрдВ:

var clock = sinon.useFakeTimers([now, ]prop1, prop2, ...);

Sets the clock start timestamp and names functions to fake.

Possible functions are setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate and Date. Can also be called without the timestamp.

рддреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреА:

clock = sinon.useFakeTimers(1495020000, 'Date');

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдЕрдм рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ: http://sinonjs.org/releases/v2.3.2/fake-timers/#var -clock--sinonusefaketimersnow-prop1-prop2-

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

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

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

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

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

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

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