ActionContext()๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ชฉ์ ์ผ๋ก URLHelper๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ฉด NullReferenceException์ด ๋ฐ์ํฉ๋๋ค.
๋์์ ์ฌํํ๋ ๋จ๊ณ:
์ค๋ฅ ๋ฉ์์ง: System.NullReferenceException: ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ ๊ฐ์ฒด์ ์ธ์คํด์ค๋ก ์ค์ ๋์ง ์์์ต๋๋ค.
๋ฒ๊ทธ ๋ณด๊ณ ์๋ StackOverflow์์๋ ์ฐพ์ ์ ์์ต๋๋ค.
https://stackoverflow.com/questions/54199103/trying-to-test-a-controller-with-a-urlhelper
์ฌ๊ธฐ์์ ์ผ์ด๋๋ ์ผ์์ด๋ค UrlHelper
์ ์ ์ํ๋ ค๋ RouteData
์ ํน์ฑ ActionContext
๊ทธ๊ฒ ๋๋ฌธ์ ์์ธ๋ฅผ ๋ฐ์ ๊ฑฐ๊ธฐ์ ๊ฐ์ด ์๋์ง ํ์ธํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค.
var url = new UrlHelper( new ActionContext{ RouteData = new RouteData() } );
์ด ํน์ ์์ฑ์๋ ๋จ์ ํ
์คํธ์ ์ฌ์ฉ๋๋๋ก ๋ฌธ์ํ๋์ด ์์ต๋๋ค. ํนํ ActionContext
๋จ์ํ ์ ๋ฌํด์ผ ํ์ง๋ง ์๋น ์ฝ๋์์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. @navelDirt๊ฐ ์ ์ํ ๋ฐฉ์์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ ๋์๊ฐ, ์ฝ๋ ์กฐ๊ฐ์ด ํน์ URL์ ์์ฑํ๋์ง ๋จ์ ํ
์คํธํ๋ ค๋ ์๋๋ผ๋ฉด stub \ mock IUrlHelper
์ฌ์ฉํ์ฌ ๋ ๋์ ์ฑ๊ณต์ ๊ฑฐ๋ ์ ์์ต๋๋ค. ์ค์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด์ผ ํ๋ ๊ฒฝ์ฐ ํตํฉ ํ
์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
@navelDirt ์ @pranavkm ์ ๋ง ๊ฐ์ฌํฉ๋๋ค.
์ฝ์ด 1.1์์๋ RouteData๋ฅผ ์ค์ ํ์ง ์๊ณ ์๋ํ์ง๋ง 2.2๋ก ์ ํํ๋ฉด ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ ํผ๋์ค๋ฌ์ ์ต๋๋ค. ๊ทธ๋์ ๋ฒ๊ทธ์ธ์ค ์์๋๋ฐ... ๋ถํธ์ ๋ผ์ณ๋๋ ค ์ฃ์กํฉ๋๋ค.