рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ
рд╕реНрдЯрдм рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди IE11 рдореЗрдВ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдЫ рдЧреБрдгреЛрдВ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЬрд┐рд╕рд╕реЗ рд╕рд┐рдиреЙрди рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ: TypeError: Cannot redefine non-configurable property '...'
рдкреНрд░рдЬрдирди рдХрд░рдирд╛
https://jsbin.com/qixexucasa/edit?js ,console,output - IE11 рдФрд░ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
"TypeError: Cannot redefine non-configurable property 'parent'
at restore (https://unpkg.com/[email protected]/pkg/sinon.js:3253:13)
at Global code (https://null.jsbin.com/runner:18:1)"
рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░
IE11 рдореЗрдВ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреБрдЫ рдЧреБрдг рдЧреИрд░-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЕрднреА рднреА рд╕реНрдЯрдм рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдпрд╣ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реИред рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛрдЧрд╛:
configurable
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ? false
рдореВрд▓реНрдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ sinon рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рддреЛ рдпрд╣ рд▓рд╛рдЗрди рд╣рдореЗрд╢рд╛ true
рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП:рдкреНрд░рд╕рдВрдЧ:
рдХреГрдкрдпрд╛ рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдмрдЧ рд╣реИ рдпрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ред
рдореБрджреНрджреЗ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдХреНрдпрд╛ рджреВрд╕рд░реА рд░рдгрдиреАрддрд┐ рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ IE11 рдореЗрдВ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдпрд╣ рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдЧреАред
рдХреНрдпрд╛ рдЖрдк рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ?
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг sinon/default-behaviors.js рд▓рд╛рдЗрди 258 рдкрд░ рдорд┐рд▓рд╛ред
value: function value(fake, newVal) {
var rootStub = fake.stub || fake;
Object.defineProperty(rootStub.rootObj, rootStub.propName, {
value: newVal,
enumerable: true,
configurable: isPropertyConfigurable(rootStub.rootObj, rootStub.propName)
});
return fake;
}
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдореВрд▓ рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкрд╛рд▓рди рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реНрдЯрдм рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореВрд▓ рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ sinon.restore ())ред
рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдмрджрд▓рдХрд░ рд╣рдореЗрд╢рд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг sinon/default-behaviors.js рд▓рд╛рдЗрди 258 рдкрд░ рдорд┐рд▓рд╛ред
рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рдореВрд▓ рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкрд╛рд▓рди рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рд╕рддреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╕реНрдЯрдм рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореВрд▓ рд╡рд╕реНрддреБ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ sinon.restore ())ред
рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдореИрдВрдиреЗ рдЙрд╕ рдХреЛрдб рдХреЛ рдмрджрд▓рдХрд░ рд╣рдореЗрд╢рд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИред