Aspnetcore: ActionContext()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UrlHelper๋ฅผ ์ƒ์„ฑํ•˜๋ฉด NullReferenceException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 01์›” 15์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/aspnetcore

๋ฒ„๊ทธ ์„ค๋ช…

ActionContext()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ URLHelper๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•˜๋ฉด NullReferenceException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

๋™์ž‘์„ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„:

  1. ๋นˆ MVC ์ฝ”์–ด 2.2 ์†”๋ฃจ์…˜ ๋งŒ๋“ค๊ธฐ
  2. xunit ํ…Œ์ŠคํŠธ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
  3. NuGet Microsoft.AspNetCore.Mvc.Core 2.2.0 ์„ค์น˜
  4. ํ…Œ์ŠคํŠธ์— ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. var Url = new UrlHelper(new ActionContext());
  5. ํ…Œ์ŠคํŠธ ์‹คํ–‰

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€: System.NullReferenceException: ๊ฐœ์ฒด ์ฐธ์กฐ๊ฐ€ ๊ฐœ์ฒด์˜ ์ธ์Šคํ„ด์Šค๋กœ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ

๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋Š” StackOverflow์—์„œ๋„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
https://stackoverflow.com/questions/54199103/trying-to-test-a-controller-with-a-urlhelper

bug

By Design area-mvc

๋ชจ๋“  3 ๋Œ“๊ธ€

์—ฌ๊ธฐ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์€์ด๋‹ค 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๋กœ ์ „ํ™˜ํ•˜๋ฉด ์ถฉ๋Œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ผ๋ž€์Šค๋Ÿฌ์› ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฒ„๊ทธ์ธ์ค„ ์•Œ์•˜๋Š”๋ฐ... ๋ถˆํŽธ์„ ๋ผ์ณ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰