рд╕рд┐рдиреЙрди рдХреЗ 2.0 рд░рд┐рд▓реАрдЬрд╝ рдЙрдореНрдореАрджрд╡рд╛рд░ рдХреЛ рд░рд┐рд▓реАрдЬрд╝ рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА рдореЗрдВ рд╣рдо рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
@mantoni @fatso83 @cjohansen рдпрд╣рд╛рдВ рдХреБрдЫ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд╛рд░реНрдп рджрд┐рдП рдЧрдП рд╣реИрдВ; рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдпрд╛ рдиреАрдЪреЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рддрд╛рдХрд┐ рд╣рдо рдПрдХ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХреЗрдВ рдФрд░ 2.0 рднреЗрдЬ рд╕рдХреЗрдВ: рд░реЙрдХреЗрдЯ:
sinon.spy
#920sinon.stub
#932sinon.mock
#933useFakeXMLHttpRequest
рдЕрднреА рднреА рд╕рдВрджрд░реНрднрд┐рдд рд╣реИ, рджреЗрдЦреЗрдВ #1118)sinon.sandbox
рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ (#936 рдореЗрдВ рдХрд┐рдП рдЧрдП рдХрд╛рдо рдХрд╛ рдереЛрдХ) #1088sinon.format
рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВ (рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХрд╕рдХрд░ рдпреБрдЧреНрдорд┐рдд) #967sinon.collection
#1084assert
рд╕реБрдЗрдЯ #1078call
рд╕реБрдЗрдЯ #1079collection
рд╕реБрдЗрдЯ #1084extend
рд╕реБрдЗрдЯ #1085match
рд╕реБрдЗрдЯ #1086mock
рд╕реБрдЗрдЯ #1087sandbox
рд╕реБрдЗрдЯ #1088spy
рд╕реБрдЗрдЯ #1001stub
рд╕реБрдЗрдЯ #1001typeOf
рд╕реБрдЗрдЯ #1085util/core
рд╕реБрдЗрдЯреНрд╕ #998, #1081util/event
рд╕реБрдЗрдЯ #1115 . рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВutil/fake-timers
рд╕реБрдЗрдЯ #1116util/fake-server
рд╕реБрдЗрдЯ #1118util/fake-server-with-clock
рд╕реБрдЗрдЯ #1118util/fake-xdomain-request
рд╕реБрдЗрдЯ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░реЗрдВutil/fake-xml-http-request
рд╕реБрдЗрдЯ #1125test/sinon-test.js
рд╕реБрдЗрдЯ рдХреЛ рддреЛрдбрд╝реЗрдВ #968sinon.config
рдЙрдкрдпреЛрдЧ рдирд┐рдХрд╛рд▓реЗрдВ (рдирд┐рд░реНрдгрдп: #936 ред #973 рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛)sinon.logError
рдФрд░ sinon.log
рдирд┐рдХрд╛рд▓реЗрдВ [#972]sinon
рд╡реИрд╢реНрд╡рд┐рдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ, рд╣рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ API рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) #996_ ?
рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрд░рдХреНрд╖рдХреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ_
sinon.test
рдФрд░ sinon.testCase
рдХреЛ рдЙрдирдХреЗ рдЕрдкрдиреЗ NPM рдореЙрдбреНрдпреВрд▓ ( sinon-test
) sinonjs/sinon-test#1 рдФрд░ #973 рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВsinon.extend
рдЖрдВрддрд░рд┐рдХ рдХрд░реЗрдВ (рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рд╕рд┐рдиреЙрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ) #1235sinon.typeOf
рдЖрдВрддрд░рд┐рдХ рдХрд░реЗрдВ (рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЬреЛ рд╕рд┐рдиреЙрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ) #1235util/fake_server.js
рддрд╛рдХрд┐ sinon
рд╡реИрд╢реНрд╡рд┐рдХ . рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗsinon.mock
рдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ ( sinon-mock
) рдореЗрдВ рдирд┐рдХрд╛рд▓реЗрдВ (рдирд┐рд░реНрдгрдп: #745)ред 3.0 . рддрдХ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛/docs
рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдХрд╛рдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореИрдВ рдПрдХ рдирдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╡реЗрдмрд╕рд╛рдЗрдЯ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдЕрдкрдиреА рдЫреБрдЯреНрдЯреА рдХреЗ рджреМрд░рд╛рди рдЙрд╕ рдкрд░ рдХреБрдЫ рдШрдВрдЯреЗ рдмрд┐рддрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
@mroderick рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╣реАрдВ рдХрд╛рдо рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореИрдВ рдбреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдБ!
рдЪреЗрдХрдмреЙрдХреНрд╕ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдорд╛рдЗрдЧреНрд░реЗрдЯ sinon.sandbox" рдХреЛ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдкреАрдЖрд░ рдмрдВрдж рд╣реИред
@jonnyreeves : рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ sinon.test
рдХреНрдпреЛрдВ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдмрдирд╛рдП рдЧрдП рд╕реНрдЯрдмреНрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рд╕реВрд╕реА рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ beforeEach
рдФрд░ afterEach
рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд░рд╛рд╣рдд рджреЗрддрд╛ рд╣реИред рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╕рд╛рди рд╡рд┐рдХрд▓реНрдк рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рдЗрд╕реЗ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ (рдмреЗрд╣рддрд░) рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдореИрдВрдиреЗ рдХрднреА рднреА sinon.testCase
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХрд╛ рдПрдкреАрдЖрдИ рдмрд╕реНрдЯрд░рдЬреЗрдПрд╕ (рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ) рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ рдФрд░ рдореЛрдЪрд╛ рдирд╣реАрдВ (рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░реНрдп рд╣реИ )
@ fatso83 рдореЗрд░реЗ рдкрд╛рд╕ sinon.test
рд╕рд╛рде рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ sinon.config
рд╕рд┐рдВрдЧрд▓рдЯрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред IMHO рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдг-рдврд╛рдВрдЪреЗ рдХреЗ beofreEach
рдФрд░ afterEach
рд╣реБрдХ рдореЗрдВ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдХрд░ (рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд) рдХрд░рдХреЗ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдЧрд░ рд╣рдо рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдореЗрдВ sinon.test
(рдФрд░ sinon.testCase
) рд░рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ; рддреЛ рд╣рдореЗрдВ рдЗрди рджреЛрдиреЛрдВ рдореБрджреНрджреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / рд╕рд┐рдиреЙрди рдХрд╛ рд╕рдорд░реНрдерди, рдореИрдВ рдЙрдирдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ рд╣реИрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ - рд╣рдореЗрдВ рд╕рд╣рдорддрд┐ рддрдХ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП?
@jonnyreeves рдареАрдХ рд╣реИ, рдЬрдм рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ sinon.config
ред IMHO рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдирд╛ рдФрд░ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдареАрдХ рд╣реИ рдЬрдм рддрдХ рд╣рдо рдЗрд╕реЗ рд╕рд┐рдиреЙрди 1 рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ sinon.test
рдХреНрдпрд╛ рд╣реБрдЖред рддреЛ doucmentation рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП
sinon.test
_рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреЗрдЦреЗрдВ link to sandbox
._
рдореИрдВ рд╕рдВрд╕реНрдХрд░рдг 2 рдореЗрдВ рдПрдХ рджреБрдмрд▓рд╛ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП typeOf
, extends
рдФрд░ sinon.test*
рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рдЕрдиреНрдп рдПрдирдкреАрдПрдо рдореЙрдбреНрдпреВрд▓ рдпрд╛ рдЕрдиреНрдп рдореМрдЬреВрджрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рджреНрд╡рд╛рд░рд╛ рдмреЗрд╣рддрд░ рд╕реЗрд╡рд╛ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ npm install sinon-test
рдФрд░ var sinonTest = require('sinon-test')(config);
рдЬреИрд╕рд╛ рдХреБрдЫ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
:+1: рдЗрд╕ рддрд░рд╣ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ npm рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред core
рдореЗрдВ рдХрдо рдХреЛрдб
рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж; рдореИрдВрдиреЗ рдЕрдм рддрдХ рдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рджрд░реНрд╢рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╡реНрдпреВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ (рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдХрд░, рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛), рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдкрд░ рд╕рдорд╛рди рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
sinon.log
рдФрд░ sinon.logError
рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИ (рджреЛрдиреЛрдВ рдирдХрд▓реА_рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ; рдФрд░ рд╢рд╛рдпрдж рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдмреЗрд╣рддрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛)sinon.mock
рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИрдзрдиреНрдпрд╡рд╛рдж
рдореИрдВрдиреЗ рдХрднреА рднреА sinon.testCase
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ sinon.test
рдХрд╛ рднрд╛рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реВрдВред рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдмрд╕ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП: рдкрд░реАрдХреНрд╖рдг рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреБрдЫ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ beforeEach
рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ (рдЬреИрд╕реЗ рдЯреЗрдк) рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд┐ рдпреЗ рд╕реЗрдЯрдЕрдк рдХрд╛рд░реНрдп рдпреБрдЧреНрдорд┐рдд рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдбреНрд░реЙрдк-рдЗрди рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЗрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реА рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкрде рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
sinon.test = require('sinon-test');
@ рдордВрдЯреЛрдиреА : рдмрдврд╝рд┐рдпрд╛ рд╕реБрдЭрд╛рд╡ред рдХреЗрд╡рд▓ рдЕрдм рдЕрдкреНрд░рдпреБрдХреНрдд test
рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдХреЗ рдпрд╣ рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрдирдХреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрди рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рдХрдо рд╕реЗ рдХрдо рдкрд░реЗрд╢рд╛рдиреА рджреЗрддрд╛ рд╣реИред рд╣рдореЗрдВ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ sinon
рд╡рд╕реНрддреБ рдЬрдореА рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ Object.freeze(sinon)
) ...
@jonnyreeves : sinon.mock
рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ @mroderick рдиреЗ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ 2.0 рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рдерд╛ред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрд╣рд┐рд╖реНрдХреГрдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП 2.0 рд░рд┐рд▓реАрдЬ рдЖрдИрдПрдордПрдЪрдУ рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рд╣рдЯрд╛рдирд╛ рдареАрдХ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреЙрдордирдЬреЗрдПрд╕ рд╕рдорд░реНрдерди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ 2.0 рд░рд┐рд▓реАрдЬ _if_ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ рд╣рдЯрд╛рдиреЗ рдореЗрдВ рдХреЛрдИ рджрд┐рдХреНрдХрдд рдирд╣реАрдВ рд╣реЛрдЧреА, рд╣рдордиреЗ рдХреЛрдб рдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рдХрд╛рд▓рд╛ рд╣реИред рддрдм рд▓реЛрдЧ рдХреЗрд╡рд▓ let sinon.mock = require('sinon-mock')
, рдпрджрд┐ рд╡реЗ рдмрд╣реБрдд рдкреНрд░рд╕рдиреНрди рд╣реЛрдВред
рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ sinon.log*
, рдореБрдЭреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрди рдкрд░ рдЪрд┐рдкрдХреЗ рд░рд╣рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
WRT рдПрдХ sinon-test
рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдмрд╕ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЛ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЕрд░реНрдерд╛рдд:
sinon.test = require('sinon-test').withConfig({ ... });
рдпрд╛ рдЗрд╕реА рдХреЗ рд╕рдорд╛рдиред
sinon-test
рдкреИрдХреЗрдЬ рдмрдирд╛рддреЗ рд╕рдордп рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд API рдкрд░рд┐рд╡рд░реНрддрди рджреЗрдЦрд╛; sinon.assert
рдХрд╛ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдлрд┐рд░ рд╕реЗ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд┐рдиреЙрди рдПрдкреАрдЖрдИ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ sinon-test
рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде sinon.test
рдФрд░ sinon.testCase
рд╕рд╛рде рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдХреЗ рдмреЗрд╣рддрд░ рдЕрдиреБрдХреВрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
@ fatso83 @mantoni @cjohansen; рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ sinon-test
рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдирд┐рд░реНрдорд╛рдг рд╣реИ - рдХреНрдпрд╛ рдЖрдк рдореЗрдВ рд╕реЗ рдХреЛрдИ рдПрдХ рдЦрд╛рд▓реА рдЧрд┐рдЯ рд░реЗрдкреЛ рдХреЛ sinonjs/sinon-test
рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдкреАрдЖрд░ рдмрдврд╝рд╛ рд╕рдХреВрдВ?
рдзрдиреНрдпрд╡рд╛рдж
рдпрд╣ рдЬрд▓реНрджреА рдерд╛! https://github.com/sinonjs/sinon-test
@cjohansen рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдПрдХ рдЦрд╛рд▓реА рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрдирд╕рдВрдкрд░реНрдХ рдирд╣реАрдВ рдмрдврд╝рд╛ рд╕рдХрддрд╛ред
рдХрд┐рдпрд╛ рд╣реБрдЖ
рдзрдиреНрдпрд╡рд╛рдж, рдкреАрдЖрд░ рдЙрдард╛рдпрд╛ - рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ: https://github.com/sinonjs/sinon-test/pull/1
@mroderick рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╣реАрдВ рдХрд╛рдо рд╣реИ, рддреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред рдореИрдВ рдбреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реВрдБ!
@spinningarrow рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрд╛рдХреА рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдЕрд▓рдЧ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #991 рдмрдирд╛рдпрд╛ рд╣реИред рдореИрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рджрд┐рдиреЛрдВ рдореЗрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╣рдо рдЗрд╕реЗ рд╡рд╣рд╛рдВ рд╕реЗ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдореЙрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдордп-рд╕рдордп рдкрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖ рд░рд╣реА рд╣реИрдВред рдЕрдм рдЬрдм @jonnyreeves рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд░реЗрдкреЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛? рддрдм рд╣рдо рдХреЗрд╡рд▓ рдирдХрд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рд╡рд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ, рдФрд░ рдореБрджреНрджреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рдереЗред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдореЙрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдордп-рд╕рдордп рдкрд░ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖ рд░рд╣реА рд╣реИрдВред рдЕрдм рдЬрдм @jonnyreeves рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреА рд╣реИ, рддреЛ рдХреНрдпрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЛ рд░реЗрдкреЛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реЛрдЧрд╛? рддрдм рд╣рдо рдХреЗрд╡рд▓ рдирдХрд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдЪрд░реНрдЪрд╛рдУрдВ рдХреЛ рд╡рд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рдереЗ, рдФрд░ рдореБрджреНрджреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рдереЗред рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рдмреЛрдЭ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рджреЗрд╡ рдЯреВрд▓реНрд╕ рдЖрджрд┐ рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рд╢рд╛рд╕рди рдХрд╛ рдмреЛрдЭред
рд╢рд╛рдпрдж рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рдЖрд╕рд╛рди рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рджреЗрд╡ рдЙрдкрдХрд░рдг рд╣реИрдВ? cc: @mantoni
@mroderick @fatso83 рдареАрдХ рд╣реИ, рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо 2.0 рдХреЛ рджрд░рд╡рд╛рдЬреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдЕрд╡рд▓реЛрдХрди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рд╕рднреА рдмрдХрд╛рдпрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдорд╛рдирддрд╛ рд╣реВрдВ (рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ CJSification рд╕рд╣рд┐рдд) - рдХреГрдкрдпрд╛ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдФрд░ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЗрд╕рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рд░реНрдпред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рд╕рд░реНрд╡рд╕рдореНрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
sinon.
) рдПрдкреАрдЖрдИ рд╕реЗ typeOf
рдФрд░ extend
рд╣рдЯрд╛ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ рдЗрд╕реЗ рд╕рд┐рдиреЙрди 3.x рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ) рдПрдкреАрдЖрдИ рдХреЗ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рд╕реЗ рдЧреБрдЬрд░реЗрдЧрд╛ред .рд╕рдмрдХреЛ рд╢реБрдХреНрд░реАрдпрд╛ред
@jonnyreeves : рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрдЬ рд░рд╛рдд рдПрдХ рд╡реНрдпрд╕реНрдд рдордзреБрдордХреНрдЦреА рд░рд╣реЗ рд╣реИрдВред рдореЗрд░реЗ рдЖрдЧреЗ рдПрдХ рд▓рдВрдмреА рдЫреБрдЯреНрдЯреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдХреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рд╡рд╛рд╕ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рдиреАрдЪреЗ рдПрдХ "рд▓реЗрдХрд┐рди" рд╣реИ)ред
рдЖрдкрдХреЗ рдЕрдВрдХ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ:
sinon-ie
рдкреИрдХреЗрдЬ? IE9 рдЕрднреА рднреА XDR рдирд╛рдордХ рдХреБрдЫ рдЕрдЬреАрдм CORS рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╢рд┐рдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЕрдЧрд░ рдХреЛрдИ рдЕрднреА рднреА 2012 рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдЖрдИрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд░рдЦрддрд╛ рд╣реИ рддреЛ рд╡реЗ рд╣рдореЗрд╢рд╛ 1.x рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХреНрд╕рдбреАрдПрдо рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП sinon-ie
рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрдордмрд╛рд░реА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред рд╣рдореЗрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПредрдЬрд┐рдЬреНрдЮрд╛рд╕реБрдГ рдЗрд╕ рдкрд░ рдХреНрдпрд╛ рд╕реНрдерд┐рддрд┐ рд╣реИ? рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ ~6mo рдкрд╣рд▓реЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдмрд╣реБрдд рдкреНрд░рдЧрддрд┐ рд╣реБрдИ рд╣реИ; рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдкреВрд░реНрд╡-рд░рд┐рд▓реАрдЬрд╝ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реВрдВ (рдкреНрд░рддреАрдХ рдХрд╛ рд╕рдорд░реНрдерди рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ) - рдореЗрд░рд╛ рдорддрд▓рдм рдзрдХреНрдХрд╛ рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рд░рд▓ 'рдПрдХ рд╣реИ<3
@ELLIOTTCABLE рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдлрдВрдбрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИред рдпрд╣ рдкреНрд░рдЧрддрд┐ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЕрдиреБрд░рдХреНрд╖рдХ рд╕рдореВрд╣ рдореЗрдВ - рдпрд╛ рдЕрдиреНрдп рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ - рдКрдкрд░ рджреА рдЧрдИ рд╕реВрдЪреА рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИред рдРрд╕рд╛ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдЙрдард╛рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рд╕реНрд╡рдпрдВ "рд╕реНрдерд┐рддрд┐" рдХрд╛ рдЙрддреНрддрд░ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ :
рддреЛ ... рд╣рдо рдХрд╣реАрдВ рдорд┐рд▓ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрдЧ рдлрд┐рдХреНрд╕ рдХреА рджреЗрдЦрд░реЗрдЦ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдирд┐рд░рдВрддрд░ рдЖрдкреВрд░реНрддрд┐, рд╣рдорд╛рд░реЗ рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рдмрд╣реБрдд рд╕рдордп рдХреЛ рдЪреВрд╕рддреА рд╣реИред рдмрд╕ рдЗрд╕ рдкрд░ рд╢реЛрдз рдХрд░рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЕрдВрдд рдореЗрдВ рдЖрдзрд╛ рдШрдВрдЯрд╛ рд▓рдЧ рдЧрдпрд╛
рдореВрд▓ рд░реВрдк рд╕реЗ, рдКрдкрд░ рджреА рдЧрдИ рд╕реВрдЪреА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рдХреЗрд╡рд▓ рджреЛ рдореБрдЦреНрдп рдореБрджреНрджреЗ рд░рд╣ рдЬрд╛рддреЗ рд╣реИрдВ:
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп рдЕрдирдХреНрд▓реЛрдЬрд╝ рдЪреЗрдХрдорд╛рд░реНрдХ рдкреБрд░рд╛рдиреЗ IE рд░рд┐рд▓реАрдЬрд╝ (6-10) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ # 1221 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░реЗрдВрдЧреЗред
@ sinonjs/sinon-core: рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рдиреЗ рдореБрдЭреЗ рдЕрд╡рдЧрдд рдХрд░рд╛рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдКрдкрд░ рдХреБрдЫ рдореБрджреНрджреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдо # 1221 рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ:
рдкрд░рд╡рд╛рд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рд╡рд┐рд░рд╛рд╕рдд рдЖрдИрдИ рдмрд┐рдЯреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдмрдирд╛рддрд╛ рд╣реВрдВ рдЕрдЧрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реНрдкрд░реНрд╢ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ xdomain
рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рднреВрдорд┐ рднрд░рдиреЗ рдореЗрдВ рднреА рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЬреНрдпрд╛рджрд╛рддрд░ рдЖрдИрдИ-рдХреЗрд╡рд▓ рд╕реАрдУрдЖрд░рдПрд╕-рд╕рдорд╛рди рд╣реИрдХ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
@ fatso83 рдЖрд╣ , рдХреЗред рдореИрдВ рд╕рдВрджрд░реНрднрд┐рдд рдореБрджреНрджреЛрдВ рдкрд░ рдЕрджреНрдпрддрди рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдЪреВрдХ рдЧрдпрд╛ред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рдерд╛!
рдЕрд╕рдВрдмрдВрдзрд┐рдд: рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ IE6 рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рдмрджрдХрд┐рд╕реНрдорддреА рд╕реЗред рдЖрд╣ рдареАрдХ рд╣реИ, рд╕реЗрд╕реНрдЯ рд▓рд╛ рдорд╛рд░реНрдЪреЗ рдбреВ рдкреНрд░реЛрдЧреНрд░реЗрд╕! /=
рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ рд╣реИрдВ, рдбреЙрдХреНрд╕ рд╕рд╛рдЗрдЯ рдХреА рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдЕрд░реЗ рдЪреИрдкреНрд╕ - рдХреБрдЫ рднреА рд╣рдореЗрдВ 2.0 рдХреЛ "рд╕реНрдерд┐рд░" рд╕рд┐рдиреЙрди рд░рд┐рд▓реАрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдФрд░ 1.x рдХреЛ рдорд╛рд░рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реИ? :)
рд╕реЛрдЪреЗрдВ рдХрд┐ рд╣рдо рдЖрдЦрд┐рд░реА рдЪреАрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ #1297 рдЪрд╛рд╣рддреЗ рдереЗред
рдЙрд╕ рдкрд░ рдИрдЯреАрдП? рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рд╣рдо рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдЬрд╣рд╛рдЬ рдирд╣реАрдВ рднреЗрдЬрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЙрд╕ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреБрдо рд▓реЛрдЧ рд╕реБрдВрджрд░ рд╣реЛред <3
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐
npm install sinon-test
рдФрд░var sinonTest = require('sinon-test')(config);
рдЬреИрд╕рд╛ рдХреБрдЫ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред