λ²κ·Έ μ€λͺ
createStubInstance
λ μμ μ μμ±μ 무μνκ³ μνΌ ν΄λμ€μμ μμλ λ©μλμ μμ±μ 무μν©λλ€.
μ¬ννκΈ° μν΄
class SubTest {
name;
constructor({ name }) { this.name = name }
something() {}
}
export default class SuperTest extends SubTest {
description;
constructor(...props) {
super(props);
this.description = props.description;
}
noop() {}
}
import sinon from 'sinon';
import SuperTest from './SuperTest.js';
sinon.createStubInstance(SuperTest, {
description: 'Lorem Ipsum',
name: 'Foobar',
noop() {},
something() {},
});
Error: Cannot stub description. Property does not exist!
at β¦/sinon/lib/sinon/stub.js:129:19
at Array.forEach (<anonymous>)
at stub.createStubInstance (β¦/sinon/lib/sinon/stub.js:120:5)
description: 'Lorem Ipsum',
μ£Όμ μ²λ¦¬ ν :
Error: Cannot stub name. Property does not exist!
at β¦/sinon/lib/sinon/stub.js:129:19
at Array.forEach (<anonymous>)
at stub.createStubInstance (β¦/sinon/lib/sinon/stub.js:120:5)
name: 'Foobar',
λ μ£Όμ μ²λ¦¬ν ν :
Error: Cannot stub something. Property does not exist!
at β¦/sinon/lib/sinon/stub.js:129:19
at Array.forEach (<anonymous>)
at stub.createStubInstance (β¦/sinon/lib/sinon/stub.js:120:5)
μ¬μ μμ noop() {}
μμΌλ©΄ μλν©λλ€.
μμλλ νλ
createStubInstance
λ μ 곡λ ν΄λμ€μ μ‘΄μ¬νλ λͺ¨λ /λͺ¨λ νλλ₯Ό μ€ν
ν κ²μΌλ‘ μμν©λλ€.
컨ν μ€νΈ(λ€μ μ 보λ₯Ό μμ±νμμμ€):
νΈμ§ : μλ μμ ν
μ€νΈλ₯Ό μ§λμΉκ² λ¨μννκ³ super()
μλ΅νμ§λ§ sinonμ λμμλ μν₯μ λ―ΈμΉμ§ μμμ΅λλ€. μμ ν
μ€νΈκ° μμ λμμ΅λλ€.
μ¬λ €μ£Όμ μ κ°μ¬ν©λλ€. μ¬κΈ°μ λͺ κ°μ§ μλͺ»λμκ±°λ μ€ν΄λκ³ μλ μ¬νμ΄ μμ΅λλ€.
createStubInstance
μ λν λ λ²μ§Έ μΈμ λ λ¬Έμν λμ§ μμμ΅λλ€.λ¬Έμμλ λ€μμ΄ λͺ μλμ΄ μμ΅λλ€.
μ§μ λ μμ±μ ν¨μκ° νΈμΆλμ§ μμ΅λλ€.
λ°λΌμ μ΄κΈ° μΈμλ₯Ό μ λ¬νλ λ° μ¬μ©ν μ μλ€λ κ°μ μ μλνμ§ μμ΅λλ€.
{ something: sinon.stub() }
).{ something: 42 }
).μ΄κ²μ λΆλͺ ν λ λμ λ¬Έμκ° νμνμ§λ§ λ²κ·Έλ μλλλ€.
μ¬μ© μ¬λ‘λ₯Ό μλμν€λ λ°©λ²:
"class" νλ‘ν νμ
μμ μ κ°μ²΄λ₯Ό μμ±νκ³ μλ€λ μ μ μ μνμμμ€. μμ±μκ° νΈμΆλμ§ μκΈ° λλ¬Έμ μ€μ λ‘ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ§λλ κ²μ΄ μλλλ€. κΈ°λ³Έμ μΌλ‘ createStubInstance
μ λ°ν κ°μ λͺ¨λ ν¨μκ° μ€ν
μΌλ‘ λ체λλ ν΄λμ€μ λμΌν μΈν°νμ΄μ€λ₯Ό κ°μ΅λλ€. λ°λΌμ μ΄ μ€ν
μΈμ€ν΄μ€μ λν μμ±μ΄ νμν κ²½μ° ν λΉνλ©΄ λ©λλ€.
λΉ λ₯Έ λ΅λ³ κ°μ¬ν©λλ€!
"class" νλ‘ν νμ μμ μ κ°μ²΄λ₯Ό μμ±νκ³ μλ€λ μ μ μ μνμμμ€. μμ±μκ° νΈμΆλμ§ μκΈ° λλ¬Έμ μ€μ λ‘ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό λ§λλ κ²μ΄ μλλλ€. κΈ°λ³Έμ μΌλ‘
createStubInstance
μ λ°ν κ°μ λͺ¨λ ν¨μκ° μ€ν μΌλ‘ λ체λλ ν΄λμ€μ λμΌν μΈν°νμ΄μ€λ₯Ό κ°μ΅λλ€. λ°λΌμ μ΄ μ€ν μΈμ€ν΄μ€μ λν μμ±μ΄ νμν κ²½μ° ν λΉνλ©΄ λ©λλ€.
createStubInstance λ΄μμ μ§μνλ κ²μ΄ κ°μΉκ° μμ΅λκΉ?
function createStubInstance (β¦) {
// β¦
return Object.assign(stubbedInstance, propertyValuePairs); // anything it doesn't recognise
}
@jshado1 λ¬Όλ‘ κ°λ₯ν©λλ€. μ΄ κΈ°λ₯μ κ΄μ¬μ΄ μμΌμλ©΄ ν 리νμ€νΈλ₯Ό 보λ΄μ£ΌμΈμ π