λ¬Έμμ΄μ κ±°λΆνλ μ½λλ₯Ό μ μ§νκ³ μμΌλ©° ν μ€νΈνλ λμ λ¬Έμ κ° λ°μν©λλ€. λ΄ λΈλ£¨ λ²λ μΊμΉκ° μ λλ‘ μλνμ§ μμ΅λλ€.
bluebird.rejects('Something')
.catch(e => e === 'Something' /* true */, () => console.log(typeof e) /*string*/)
.catch(() => console.log('should not be here'));
κ·Έλ¬λ sinon.stub().usingPromise('bluebird').rejects('Something');
μ¬μ©νλ©΄ Somethingμ΄λΌλ μ΄λ¦μ μ€λ₯ κ°μ²΄κ° μμ±λ©λλ€. μ ν μμλμ§ μμ΅λλ€.
λκ΅°κ° μ°λ¦¬κ° λ€μ΄ν°λΈ μ½μ λ§ μ§μνλ€κ³ λ§νκΈ° μ μ κ·Έλ€μ΄ 무μμνλμ§ μ‘°μ¬ ν΄λ³΄μ!
Promise.reject('Something')
.catch(e => {
console.log(e === 'Something'); // true
console.log(typeof e); // string
});
ν , κ·Έλ€μ Error ν΄λμ€λ₯Ό μμ±νμ§ μκ³ λμ Έμ§ κ²μ²λΌ μ£Όμ΄μ§ μμΈλ₯Ό λμ§λλ€.
try {
throw 'Something';
} catch (e) {
console.log(e === 'Something'); // true
console.log(typeof e); // string
}
λκ΅°κ° μ°λ¦¬κ° λ€μ΄ν°λΈ μ½μ λ§ μ§μνλ€κ³ λ§νκΈ° μ μ κ·Έλ€μ΄ 무μμνλμ§ μ‘°μ¬ ν΄λ³΄μ!
κ·Έκ²μ μ§λ§¨μ μ€λ₯ μ λλ€. κ·νμ μμ μμ μ¬μ©νλ κ²μ²λΌ μ°λ¦¬κ° promise λΌμ΄λΈλ¬λ¦¬λ₯Ό μ§μνλ€λ κ²μ μΆ©λΆν μκ³ μμ΅λλ€.
Sinon κ΄λ¦¬μλ Promise.reject()
κ° μ λ¬νλ λͺ¨λ κ²μ μ λ¬νλ€λ μ μ ν¬ν¨νμ¬ JavaScript promiseκ° μλνλ λ°©μμ μμ ν μκ³ μμ΅λλ€.
λ¬Έμμ΄μ κ±°λΆνλ μ½λλ₯Ό μ μ§νκ³ μμ΅λλ€.
μ μκ°μλ,μ μ½μμ κ±°λΆ String
λμ Error
μ λ§ μ°λ¦¬κ° μ€λ 무μμ μ°κΈ° λλ²κΉ
μ΄ λ―Έλ κ°λ°μμκ² λͺΉμΈμνκ³ μμ΅λλ€. λ¬Έμμ΄μ μ€ν μΆμ μ μΊ‘μ²νμ§ μκΈ° λλ¬Έμ λλ²κΉ
μ κ·Έλ€μ§ μ μ©νμ§ μμ΅λλ€. λ°λ©΄μ Error
μ
λλ€. λ°λΌμ rejects()
λμμ΄ λ°λμ§νλ€κ³ μκ°ν©λλ€. κ·ΈλμΌ λλ²κ±°λ₯Ό μ¬μ©νμ¬ λ¬΄μμ΄ μλͺ»λμλμ§ μ μνκ² νμ
ν μ μκΈ° λλ¬Έμ
λλ€.
λμνμ§ μλ κ² κ°μ§λ§ λΉμ μ΄ ν μ μΌν μ§μ μ Sinonμ΄ λΉμ μ κΈ°λλ₯Ό μΆ©μ‘±μν€μ§ λͺ»νλ€λ κ²μ λλ€. κΈ°λ³Έ λμμ λ³κ²½ν΄μΌνλ€κ³ μκ°νλ κ²½μ° λ³κ²½ μ¬νμ΄ λ§μ μ¬μ©μμκ² μν₯μ λ―ΈμΉ μ μμμ μΌλμλκ³ μ΄μ μ λν μΈμλ₯Ό κ²μνμμμ€.
κΈ°λ³Έ λμμ λ³κ²½νκΈ°μν νμ€ν μ£Όμ₯μ΄ μλ€λ©΄ Sinonμ κ΄λ¦¬μ μ€ λꡬλμ΄λ₯Ό λ³κ²½νκΈ°μν pull μμ²μ λ°λ ν κ²μ΄λΌκ³ μμν μ μμ΅λλ€.
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ λ°μνμ§ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
νΉμ μλ리μ€μμ μ€ν μΆμ μ΄ μ€μ λ‘ μ μ©ν μ§ μ¬λΆμ λν΄ λ€λ₯Έ μ견μ΄μμ μ μμ΅λλ€. λ΄ νΉμ μν©μμλ μ€μ λ‘ μ€ν μΆμ μ μ κ²½ μ°μ§ μκ³ μ€λ₯ λ©μμ§μλ§ κ΄μ¬μ΄ μκ³ λ€λ₯Έ κ³³μ μ λ¬ν©λλ€. κ·Έλμ μ λ λ¬Έμμ΄κ³Ό μ€λ₯ μ ν κ±°λΆ μ΄μ λ₯Ό λͺ¨λ μ²λ¦¬νλ μ½λλ₯Ό μμ±νμ΅λλ€. κ·Έλ¬λ sinonμ λλ₯Ό μν΄ String-> Error κ°μ λ³νμ μννλ―λ‘ λ¬Έμμ΄μ μ²λ¦¬νλ μ½λ λΆκΈ°λ₯Ό ν μ€νΈ ν μ μμ΅λλ€. λ°λΌμ μ 체 보νμλ°μ μ μμ΅λλ€.
μ€ν μΆμ μ μ©μ± λ° μ€λ₯ κ°μ²΄λ₯Ό μ μ³λκ³ μμ±ν΄μΌνλμ§μ λν ν λ‘ , μΌλ°μ μΌλ‘ λμν©λλ€.
const example = sinon.stub().rejects(something);
λ€μκ³Ό λμΌν΄μΌν©λλ€.
const example = () => Promise.reject(something);
νμ¬λ something
κ° λ¬Έμμ΄ μΈ κ²½μ°μλ ν΄λΉλμ§ μμ΅λλ€. νμ¬ λμμ΄ λ²κ·ΈλΌκ³ λ§νκ³ μΆμ΅λλ€.
λλ λμνλ€.
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ λ°μνμ§ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
κ°μ₯ μ μ©ν λκΈ
μ€ν μΆμ μ μ©μ± λ° μ€λ₯ κ°μ²΄λ₯Ό μ μ³λκ³ μμ±ν΄μΌνλμ§μ λν ν λ‘ , μΌλ°μ μΌλ‘ λμν©λλ€.
λ€μκ³Ό λμΌν΄μΌν©λλ€.
νμ¬λ
something
κ° λ¬Έμμ΄ μΈ κ²½μ°μλ ν΄λΉλμ§ μμ΅λλ€. νμ¬ λμμ΄ λ²κ·ΈλΌκ³ λ§νκ³ μΆμ΅λλ€.