μΉ λΆλΆμ€ ννλΆλΆμ λν΄ μ΄λ»κ² TDDκ° μ§νλ κΉ?
μ²μ μ½λλ μ΄λ¬νλ€.
μ¦, νμ¬ action μ½λμ λ€ μμ¬μλ κ²μ΄λ€.μ΄λΆλΆμ TDDλ‘ μμ±νκΈ° μν ν
μ€νΈλ λ€μκ³Ό κ°μλ€.
μ¦, μΌμ’
μ Template Method μ ννλ‘μ Testable νκΈ° νΈν ViewPageAction μ μλΈν΄λμ€λ₯Ό λ§λ€μλ€. μ΄μ°¨νΌ μ€μνκ²μ ν΄λΉ νν λΆλΆμ΄ μ νΈμΆλλλμ΄λ―λ‘, μ΄μ λν΄μλ μλΈν΄λμ€λ‘μ ν
μ€νΈλ₯Ό λΉκ΅νλ€.
κ·Έλ¬λ€κ°, μ΅κ·Ό νλ‘μ νΈ νλμ€μ ModelViewPresenter λΌλ κ°λ
μ λν΄ μ΅νκ² λμλ€. μ νν κ°λ
μ λν΄μλ μ μ‘μ§λ₯Ό λͺ»νμ§λ§, HumbleDialogBox λΌλ μν°ν΄μ 보λ λκ° κ°μ΄ μ¨κ² κ°μλ€. μ€μν 건 ννλΆλΆμ λν΄μ κ°λ₯νν λ‘μ§μ΄ λ¨μ§ μμμΌ νλ€λ μ μ΄κ³ , ννλΆλΆμ μ¬μ©νλ μͺ½ μ
μ₯μμλ κ°λ₯νν μΆμνλ λ²¨μ΄ λμ λ©μλλ₯Ό μΈ μ μμ΄μΌ νλ€λ μ μ΄λ€.
μνΌ, νμ¬μ λ΄ μ½λλ‘ λ΄€μλλ κΈ°μ‘΄μ MVC λ‘ λ΄€μ λμλ Viewμ Controller κ° μμ¬μλ ννμλ€. μ΄ λΆλΆμ λν΄μ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό λ³κ²½ν΄λ³΄μλ€.
http://free1002.nameip.net:8080/viewcvs/viewcvs.cgi/*checkout*/pyki/viewpresenter.py?rev=1.1&content-type=text/plain
presenter λΆλΆμ μΆν λ΄λΆμ μΌλ‘ Template μμ§μ μ¬μ©νλ λ°©ν₯μ μκ°ν΄ λ³Ό μλ μμκ² κ°λ€.
presenter λΆλΆμ μΆν λ΄λΆμ μΌλ‘ Template μμ§μ μ¬μ©νλ λ°©ν₯μ μκ°ν΄ λ³Ό μλ μμκ² κ°λ€.
μ΄λ κ² λ κ²½μ° ν
μ€νΈ μ½λλ λ€μκ³Ό κ°λ€. μ¬μ°¨νλ©΄ ν
μ€νΈ μ½λμμ presenter λ₯Ό μ¬μ©ν μλ μμλ€. (μ΄μ°¨νΌ ViewPageAction μν μ μ νλλκ° μ€μνλκΉ, κ±°κΈ°μ λΆλ HTML λ€μ΄ μ΄λ νλκ° μ€μνμ§ μμκ²μ΄λ€.)
νμ§λ§, μ΄κ±΄ 리ν©ν λ§ λ¨κ³μμμ μ΄μΌκΈ°κ³ , λ§μΌ μ μ½λλ₯Ό μμ±νλ μ€μ UI λΆλΆ presenter λ₯Ό TDDλ‘ κ΅¬ννλ€λ©΄ μ΄λ»κ² λ κΉ? μλ§ μ MockViewPresenter λΆλΆμ΄ λ¨Όμ ꡬνλκ³ , μ΄ μΈν°νμ΄μ€λ₯Ό κ·Όκ±°λ‘ ViewPresenter λ₯Ό λ§λ λ€ HTML μ½λ λΆλΆμ μμ±νλ©΄ λ κ² κ°λ€. μ€μ UI μ μ΄λ μ΄λ ν κ²μ΄ ννλλλλ AcceptanceTest λ¨μ λ§‘κΈ°λ©΄ λ리λΌ.
λ€μλΆν° action λΆλΆμ μμ±νλ€λ©΄?
- action test λ₯Ό λ§λ λ€. (μκ°ν΄λ³΄κ±΄λ°, action μμμ Servlet λΆλΆμ΄ μλ κ³³ λν μκ² λ§λ€ μ μκ² λ€λ μκ°μ ν΄λ³Έλ€.)
- MockPresenter λ₯Ό λ§λ λ€. μ€μν κ²μ μΆλ ₯κ²°κ³Όλ₯Ό ν
μ€νΈνλκ²μ΄ λͺ©μ μ΄ μλλΌ action κ²°κ³Ό νν΄μ§λ μΌλ€(Transaction)μ΄ μ λλ‘ μΌμ΄λ¬λμ§λ₯Ό ν
μ€νΈνλ κ²μ΄λ€. MockPresenter λ κ·Έλ₯ ν΄λΉ λ©μλλ€μ΄ νΈμΆλμλμ§λ§ verify νλμ λλ©΄ μΆ©λΆν κ²μ΄λ€.
- MockPresenter λ₯Ό κ·Όκ±°λ‘ Real Presenter λ₯Ό λ§λ λ€.
--1002