рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП рджреЗрдЦрд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рд╕реАрдПрд╕рд╡реА рд▓реЗрдЦрди рд╡рд┐рдлрд▓ рдХреНрдпреЛрдВ рд╣реЛ рдЧрдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдПрдХ setImmediate
рдХреЙрд▓ рдерд╛ рдЬреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд░рд╣рд╛ рдерд╛: https://github.com/C2FO/fast-csv/blob/master/lib/extended.js#L18
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдЕрд╣рд╛рдирд┐рдХрд░ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП setImmediate
рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ setImmediate
рдХрд╛ рдвреЛрдВрдЧ рдХрд░рдиреЗ рд╕реЗ рдЙрди рд╕рднреА рдореЗрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИ:
рд╢рд╛рдпрдж рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЕрдиреБрдЪрд┐рдд рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рд╕реАрдПрд╕рд╡реА рд▓реЗрдЦрди рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ? рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЖрдк рдХреЗрд╡рд▓ ctrl+c
рд╣рд┐рдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖред рдХреЛрдб рдХрд╛ рдХреМрди рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рдлреНрд░реАрдЬ рд╣реЛ рд░рд╣рд╛ рдерд╛, рдпрд╣ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рдФрд░ рдлрд┐рд░ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 90 рдорд┐рдирдЯ рд▓рдЧ рдЧрдП рдХрд┐ рд╕рд┐рдиреЙрди рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреНрдпреЛрдВ рдерд╛ред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдиреЗ setImmediate
рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдХрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИ рдЬрд┐рд╕реЗ рдЙрд▓рдЭрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд░ рдЬрд╡рд╛рдм рд╣реИ рдХрд┐ рдореБрдЭреЗ useFakeTimers(0, "Date")
рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рддреЛ рд╢рд╛рдпрдж рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЗрд░реА/рд▓реЛрдЧреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реЛ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ?
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдиреЗ рд╕реЗрдЯрдЗрдореАрдбрд┐рдПрдЯ рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдХрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИ рдЬрд┐рд╕реЗ рдЙрд▓рдЭрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЬрдм рдЖрдк рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рддреЛ рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ, рдПрдХ рдирдпрд╛ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЗ рд▓рд┐рдП рддрддреНрдХрд╛рд▓ рд╕реЗрдЯ рдХрд░реЗрдВ (рдФрд░ рд╕рдордп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ)ред
рд╣рд╛рдВ, рдореИрдВрдиреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдЗрд╕рдХрд╛ рдирд┐рджрд╛рди рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЕрднреА 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-
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдпрд╣ рд░реВрдк рдЕрдм рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирдХрд▓реА рд╣реИрдВ:
рддреЛ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреА: