λ²κ·Έ μ€λͺ
μ€ν
μ΄ κ°λ₯νμ§λ§ IE11μ μ°½ κ°μ²΄μμ μΌλΆ μμ±μ 볡μνμ§ μμ sinonμμ μ ν μ€λ₯κ° λ°μν©λλ€. 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 ()) ν μ μκΈ° λλ¬Έμ νμ μ¬μ€μ΄μ΄μΌνλ€κ³ μκ°ν©λλ€.
μΌμμ μΌλ‘ μ½λλ₯Ό λ³κ²½νμ¬ νμ trueλ₯Ό λ°νν¨μΌλ‘μ¨μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
λλ κ°μ λ¬Έμ κ° μκ³ sinon / default-behaviors.js λΌμΈ 258μμ κ·Έ μμΈμ μ°Ύμμ΅λλ€.
μλ κ°μ²΄μ κ΅¬μ± κ°λ₯ν μ΅μ μ λ°λΌμΌνλ μ΄μ λ₯Ό λͺ¨λ₯΄κ² μ΅λλ€. μ€ν°λ νμλ μλ κ°μ²΄μ μ΅μ μ κ΄κ³μμ΄ λ³΅μ λλ μ¬ μμ± (μΌλ°μ μΌλ‘ sinon.restore ()) ν μ μκΈ° λλ¬Έμ νμ μ¬μ€μ΄μ΄μΌνλ€κ³ μκ°ν©λλ€.
μΌμμ μΌλ‘ μ½λλ₯Ό λ³κ²½νμ¬ νμ trueλ₯Ό λ°νν¨μΌλ‘μ¨μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.