Sinon: μƒˆ 였λ₯˜ 개체λ₯Ό λ§Œλ“œλŠ” κ±°λΆ€λ₯Ό μ–΄λ–»κ²Œ μž¬μ •μ˜ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

에 λ§Œλ“  2018λ…„ 02μ›” 01일  Β·  6μ½”λ©˜νŠΈ  Β·  좜처: sinonjs/sinon

https://github.com/sinonjs/sinon/blob/4310343393b16b92b56526ab4614da4eb2886efa/lib/sinon/default-behaviors.js#L176

λ¬Έμžμ—΄μ„ κ±°λΆ€ν•˜λŠ” μ½”λ“œλ₯Ό μœ μ§€ν•˜κ³  있으며 ν…ŒμŠ€νŠΈν•˜λŠ” λ™μ•ˆ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. λ‚΄ 블루 λ²„λ“œ μΊμΉ˜κ°€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

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
}
Bug Help wanted pinned

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μŠ€νƒ 좔적 μœ μš©μ„± 및 였λ₯˜ 개체λ₯Ό μ œμ³λ‘κ³  μž‘μ„±ν•΄μ•Όν•˜λŠ”μ§€μ— λŒ€ν•œ ν† λ‘ , 일반적으둜 λ™μ˜ν•©λ‹ˆλ‹€.

const example = sinon.stub().rejects(something);

λ‹€μŒκ³Ό λ™μΌν•΄μ•Όν•©λ‹ˆλ‹€.

const example = () => Promise.reject(something);

ν˜„μž¬λŠ” something κ°€ λ¬Έμžμ—΄ 인 κ²½μš°μ—λŠ” ν•΄λ‹Ήλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ™μž‘μ΄ 버그라고 λ§ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  6 λŒ“κΈ€

λˆ„κ΅°κ°€ μš°λ¦¬κ°€ λ„€μ΄ν‹°λΈŒ 약속 만 μ§€μ›ν•œλ‹€κ³  λ§ν•˜κΈ° 전에 그듀이 λ¬΄μ—‡μ„ν•˜λŠ”μ§€ 쑰사 ν•΄λ³΄μž!

그것은 짚맨의 였λ₯˜ μž…λ‹ˆλ‹€. κ·€ν•˜μ˜ μ˜ˆμ œμ—μ„œ μ‚¬μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ μš°λ¦¬κ°€ 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 κ°€ λ¬Έμžμ—΄ 인 κ²½μš°μ—λŠ” ν•΄λ‹Ήλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν˜„μž¬ λ™μž‘μ΄ 버그라고 λ§ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” λ™μ˜ν•œλ‹€.

이 λ¬Έμ œλŠ” 졜근 ν™œλ™μ΄ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— μžλ™μœΌλ‘œ 였래된 κ²ƒμœΌλ‘œ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 이상 ν™œλ™μ΄ λ°œμƒν•˜μ§€ μ•ŠμœΌλ©΄ νμ‡„λ©λ‹ˆλ‹€. κ·€ν•˜μ˜ 기여에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰