Skip to content

Latest commit

Β 

History

History
66 lines (39 loc) Β· 3.09 KB

04-snapshot-testing.md

File metadata and controls

66 lines (39 loc) Β· 3.09 KB

μ—­μžμ£Ό

이 λ¬Έμ„œλŠ” 04-snapshot-testing.md의 ν•œκ΅­μ–΄ λ²ˆμ—­μž…λ‹ˆλ‹€. μ΄κ³³μ—μ„œ AVA의 master λΈŒλžœμΉ˜μ™€ 이 λ¬Έμ„œμ˜ 차이λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. (λ§Œμ•½ 차이가 μ—†λ‹€λ©΄ λ¬Έμ„œκ°€ μ΅œμ‹  λ²„μ „μž„μ„ μ˜λ―Έν•©λ‹ˆλ‹€)


μŠ€λƒ…μƒ· ν…ŒμŠ€νŒ…

AVAλŠ” Jestμ—μ„œ λ„μž…λœ μŠ€λƒ…μƒ· ν…ŒμŠ€νŒ…μ„ μ§€μ›ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή κΈ°λŠ₯은 단언문 μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–€ 값이든 μŠ€λƒ…μƒ·μ„ 찍어 놓을 수 μžˆμŠ΅λ‹ˆλ‹€.

μŠ€λƒ…μƒ·μ€ ν…ŒμŠ€νŠΈ 파일과 ν•¨κ»˜ μ €μž₯λ©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ νŒŒμΌλ“€μ΄ testλ‚˜, tests 폴더에 μžˆλ‹€λ©΄, μŠ€λƒ…μƒ·λ“€μ€ snapshots 폴더에 μ €μž₯λ©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ νŒŒμΌλ“€μ΄ __tests__ 폴더에 μžˆλ‹€λ©΄, μŠ€λƒ…μƒ·λ“€μ€ __snapshots__ 폴더에 μ €μž₯λ©λ‹ˆλ‹€.

μŠ€λƒ…μƒ· 단언문을 ν¬ν•¨ν•˜λŠ” ~/project/test/main.js ν…ŒμŠ€νŠΈ 파일이 μžˆλ‹€κ³  κ°€μ •ν•΄λ΄…μ‹œλ‹€.

AVAλŠ” 두 개의 νŒŒμΌμ„ λ§Œλ“€ 것 μž…λ‹ˆλ‹€:

  • ~/project/test/snapshots/main.js.snap
  • ~/project/test/snapshots/main.js.md

첫 번째 νŒŒμΌμ€ μ‹€μ§ˆμ μΈ μŠ€λƒ…μƒ· 파일둜, λ―Έλž˜μ— 비ꡐλ₯Ό μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

두 번째 νŒŒμΌμ€ μŠ€λƒ…μƒ· 리포트λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€.

이 νŒŒμΌμ€ μŠ€λƒ…μƒ·μ΄ μ—…λ°μ΄νŠΈ 될 λ•Œ μž¬μƒμ„±λ©λ‹ˆλ‹€.

λ§Œμ•½ μ†ŒμŠ€ μ»¨νŠΈλ‘€μ— μ»€λ°‹ν•œλ‹€λ©΄, ν•΄λ‹Ή 파일둜 μŠ€λƒ…μƒ·μ— λŒ€ν•œ λ³€κ²½ 사항을 비ꡐ해 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

AVAλŠ” μŠ€λƒ…μƒ· 단언문이 μ‹€νŒ¨ν•œ 이유λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€. :

그럼 μ½”λ“œλ₯Ό 확인해보면 λ©λ‹ˆλ‹€.

λ§Œμ•½ μŠ€λƒ…μƒ· νŒŒμΌλ“€μ˜ λ³€ν™”κ°€ μ˜λ„λœ 것이라면, --update-snapshots (λ˜λŠ” -u) ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•΄ μŠ€λƒ…μƒ·λ“€μ„ μ—…λ°μ΄νŠΈ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

$ ava --update-snapshots

λ§Œμ•½ νŠΉμ • ν…ŒμŠ€νŠΈλ“€μ„ μœ„ν•΄ μŠ€λƒ…μƒ·μ„ μ—…λ°μ΄νŠΈ ν•  ν•„μš”κ°€ μžˆλ‹€λ©΄, --update-snapshots ν”Œλž˜κ·Έμ™€ ν•¨κ»˜ --match ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•˜κ±°λ‚˜ .only()λ₯Ό μ‚¬μš©ν•΄ ν…ŒμŠ€νŠΈλ₯Ό μ„ νƒν•˜μ„Έμš”.

package.json 섀정에 μŠ€λƒ…μƒ· νŒŒμΌλ“€μ„ μ €μž₯ν•  μœ„μΉ˜λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

package.json:

{
	"ava": {
		"snapshotDir": "custom-directory"
	}
}

μŠ€λƒ…μƒ· νŒŒμΌμ€ ν…ŒμŠ€νŠΈ νŒŒμΌλ“€μ˜ 경둜λ₯Ό λ°˜μ˜ν•œ 디렉터리 ꡬ쑰에 μ €μž₯될 κ²ƒμž…λ‹ˆλ‹€.

precompile된 ν…ŒμŠ€νŠΈ νŒŒμΌμ— λŒ€ν•΄ AVAλ₯Ό μ‹€ν–‰ν•˜λŠ” 경우, AVAλŠ” 원본 νŒŒμΌλ“€μ˜ μœ„μΉ˜λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ μ†ŒμŠ€ 맡(source map)을 μ‚¬μš©ν•˜λ € ν•  κ²ƒμž…λ‹ˆλ‹€.

μŠ€λƒ…μƒ· νŒŒμΌλ“€μ€ ν•΄λ‹Ή μ†ŒμŠ€ 맡 νŒŒμΌλ“€κ³Ό ν•¨κ»˜ μ €μž₯될 κ²ƒμž…λ‹ˆλ‹€. 이 λ•Œμ—λ„ AVAκ°€ 직접 원본 νŒŒμΌλ“€μ„ μ‹€ν–‰ν–ˆμ„ λ•Œμ™€ 같은 룰을 λ”°λ¦…λ‹ˆλ‹€.

이것은 νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•  λ•Œ μ•„μ£Ό μœ μš©ν•©λ‹ˆλ‹€. (μ°Έμ‘°: νƒ€μž…μŠ€ν¬λ¦½νŠΈ λ ˆμ‹œν”Ό)