IT/development

[Spring]spring ํ”„๋ ˆ์  ํ…Œ์ด์…˜(์›น)๊ณ„์ธต์˜ CRUD ๊ตฌํ˜„ ์‹œ MockTest

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2022. 11. 27.

๋ชฉ์ฐจ

    MockTest

    ๊ณผ๊ฑฐ์—๋Š” viewํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“  ๋’ค Tomcat์„ ์‹คํ–‰ํ•˜๊ณ  ์›น ํŽ˜์ด์ง€์—์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ์™”๋Š”๋ฐ, ์ด ๋ฐฉ์‹์€ ์‹œ๊ฐ„๋„ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ž๋™ํ™” ํ•˜๊ธฐ์—๋„ ์–ด๋ ค์›€์ด ๋งŽ์•„์„œ Mock์„ ์ด์šฉํ•ด์„œ Controller๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์Œ
    MockMvc๋Š” ๋ง ๊ทธ๋Œ€๋กœ '๊ฐ€์งœ mvc'๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋˜๊ณ , ๊ฐ€์งœ๋กœ URL๊ณผ parameter ๋“ฑ์„ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋งŒ๋“ค์–ด์„œ Controller๋ฅผ ์‹คํ–‰ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Œ

    ์šฐ์„  ์•„๋ž˜์ฒ˜๋Ÿผ BoardController์—์„œ ๊ฒŒ์‹œ๊ธ€ ์ „์ฒด ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ค๋Š” ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•จ

    ๊ทธ ๋‹ค์Œ ์•„๋ž˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์›น์„ ๊ฐœ๋ฐœํ•  ๋•Œ ๋งค๋ฒˆ URL์„ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด Tomcat์„ ์‹คํ–‰ํ•˜๋Š” ๋ถˆํŽธํ•œ ๋‹จ๊ณ„๋ฅผ ์ƒ๋žตํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ธฐ์กด๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ž‘์„ฑ

    @WebAppConfiguration ์–ด๋…ธํ…Œ์ด์…˜์€ Servlet์˜ ServletContext๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ์ธ๋ฐ, ์Šคํ”„๋ง์—์„œ๋Š” WebApplicationContext๋ผ๋Š” ์กด์žฌ๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž„

    @Before ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋œ method๋Š” ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ „์— ๋งค๋ฒˆ ์‹คํ–‰๋˜๋Š” method๊ฐ€ ๋จ, @Before๋Š” import ์‹œ jUnit์„ ์ด์šฉํ•ด์•ผ ํ•จ
    MockMvcRequestBuilders๋ผ๋Š” ์กด์žฌ๋ฅผ ์ด์šฉํ•ด์„œ GET ๋ฐฉ์‹์˜ ํ˜ธ์ถœ์„ ํ•˜๊ณ  ์ดํ›„์—๋Š” BoardController์˜ getList()์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฒฐ๊ณผ๋ฅผ ์ด์šฉํ•ด์„œ model์— ๋‹ด๊ฒจ์ง„ ๋ฐ์ดํ„ฐ๋“ค์„ ํ™•์ธํ•จ

    ์•„๋ž˜๋Š” jUnit์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•œ ๊ฒฐ๊ณผ๊ฐ’์ž„, model์— ๋‹ด๊ธด ๊ฐ’์ด ์ •์ƒ์ ์œผ๋กœ ํ™•์ธ ๋จ

    MockMvc๋ฅผ ์ด์šฉํ•ด์„œ parameter์˜ ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•จ(parameter์˜ ๊ฐ’ ์ „๋‹ฌ ์‹œ ๋ฌธ์ž์—ด๋กœ๋งŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ
    ์•„๋ž˜๋Š” BoardController์˜ ๋‚ด์šฉ

    url Mapping์„ "/board/register"๋กœ ํ•˜๊ณ  parameter๋กœ BoardVO ๊ฐ์ฒด, bno์˜ ๊ฐ’๋„ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ RedirectAttributes๊ฐ์ฒด๋ฅผ ๋ฐ›์•˜๋‹ค

    ์•„๋ž˜๋Š” ์œ„์˜ resister() method๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์ž„
    MockMvcRequestBuilders.post().param("name", "value")์ด๋Ÿฐ์‹์œผ๋กœ ์ถ”๊ฐ€ํ•˜๋ฉด ๋จ

    ์œ„์˜ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ’์€ ์•„๋ž˜์™€ ๊ฐ™์Œ

    ์•„๋ž˜ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ์‹ค์ œ๋กœ DB์—๋„ ์ •์ƒ์ ์œผ๋กœ ๋“ฑ๋ก์ด ๋œ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Œ

     

    ์ถœ์ฒ˜: ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ์›น ํ”„๋กœ์ ํŠธ(๊ฐœ์ •ํŒ)

     

    ๋Œ“๊ธ€