±à¼ÍƼö: |
±¾ÎÄÀ´×Ôinfoq£¬±¾ÎÄÎÒÃǽ«Á˽âʹÓõ¥Ôª²âÊÔ½øÐÐÄÚ²¿²âÊÔ£¬Ê¹ÓÃȫеÄ
ASP .NET Core µÄ¼¯³É²âÊÔ¿ò¼ÜÀ´½øÐÐÍⲿ²âÊÔ¡£
|
|
±¾ÎÄÒªµã
1.ÕýÈ·Àí½â²¢Ê¹Óõ¥Ôª²âÊÔºÍÄãµÄ ASP .NET Core Web
API ½â¾ö·½°¸Ò»ÑùÖØÒª¡£
2.Á˽ⲢʹÓÃÄ£ÄâÊý¾Ý½øÐе¥Ôª²âÊÔ¿ÉÒÔ°ïÖúÄã»ñµÃÎȶ¨µÄ²âÊÔ³¡¾°¡£
3.Ϊ ASP .NET Core Web API ½â¾ö·½°¸ÔÚ .NET
Core 2.1 Öд´½¨Ä£ÄâÊý¾ÝÏîÄ¿¡£
4.Á˽ⲢÉèÖü¯³É²âÊÔÀ´´ÓÍⲿ²âÊÔ API£¬ÕâÑù¿ÉÒÔ°ïÖúÍêÕû²âÊÔ
ASP .NET Core 2.1 Web API ½â¾ö·½°¸¡£
.NET Core ×î³õÊÇÔÚ 2016 Äê·¢²¼µÄ£¬Ëæ×Å .NET Core 2.0 µÄ·¢²¼£¬Î¢ÈíÓµÓÐÁËÏÂÒ»¸öͨÓá¢Ä£¿é»¯¡¢¿çƽ̨ºÍ¿ªÔ´µÄƽ̨Ö÷°æ±¾¡£.NET
Core ÒѾ´´½¨ÁËÐí¶à API£¬ÔÚµ±Ç°°æ±¾µÄ .net ¿ò¼ÜÖоù¿ÉÓá£Ëü×î³õÊÇΪÏÂÒ»´ú ASP .NET
½â¾ö·½°¸¶ø´´½¨µÄ£¬µ«ÏÖÔÚ³ÉÁËÐí¶àÆäËû³¡¾°µÄÇý¶¯ºÍ»ù´¡£¬°üÀ¨ÎïÁªÍø¡¢ÔƼÆËãºÍÏÂÒ»´úÒÆ¶¯½â¾ö·½°¸¡£ÔÚ±¾ÏµÁÐÎÄÕÂÖУ¬ÎÒÃǽ«Ì½ÌÖ
.NET Core µÄһЩºÃ´¦£¬ÒÔ¼°ËüÈçºÎ²»½öÄÜʹ´«Í³µÄ .NET ¿ª·¢ÈËÔ±ÊÜÒæ£¬»¹ÄÜʹËùÓÐÐèҪΪÊг¡´øÀ´½¡×³¡¢¸ßЧºÍ¾¼ÃµÄ½â¾ö·½°¸µÄ¼¼ÊõÈËÔ±ÊÜÒæ¡£
ÔÚʹÓà ASP .NET Core 2.1 Web API ¹¹½¨²¢¿ª·¢Ò»×é·á¸»µÄ API µÄʱºò£¬ÐèÒª¼ÇסÕâÖ»ÊÇʵÏÖÎȶ¨ÇÒ¸ßЧµÄ½â¾ö·½°¸µÄµÚÒ»²½¡£ÎªÄãµÄ½â¾ö·½°¸Ìṩһ¸öÎȶ¨µÄ»·¾³ÊǷdz£ÖØÒªµÄ¡£»ñµÃÓÅÐãµÄ½â¾ö·½°¸²»½öÐèÒªÍêÕûµØ¹¹½¨
API£¬»¹ÐèÒªÑϸñµØ²âÊÔÄãµÄ API£¬±£Ö¤Óû§ÓÐÁ¼ºÃµÄÌåÑé¡£
ÕâÆªÎÄÕÂÊÇÎÒ֮ǰΪ InfoQ дµÄ¡¶Õë¶Ô ASP.NET Core Web API µÄÏȽø¼Ü¹¹¡·µÄºóÐøÎÄÕ¡£Çë·ÅÐÄ£¬Äã²»ÐèÒªÔĶÁÁíÍâһƪÎÄÕ£¬¾Í¿ÉÒÔ´ÓÕâÆªÎÄÕÂÁ˽⵽ÈçºÎ´Ó²âÊÔÖлñµÃºÃ´¦£¬µ«¶ÁÒ»ÏÂÄÇÆªÎÄÕ¿ÉÒÔ°ïÖúÄã¸ü¶àÁ˽âÎÒÊÇÈçºÎ¹¹½¨ÎÒÌÖÂ۵Ľâ¾ö·½°¸µÄ¡£ÔÚ¹ýÈ¥µÄ¼¸ÄêÀÎÒ»¨ÁË´óÁ¿Ê±¼äÀ´Ë¼¿¼ÔÚΪ¿Í»§¹¹½¨
API ʱ½øÐвâÊÔ¡£Á˽â ASP .NET Core 2.1 Web API µÄ¼Ü¹¹£¬¿ÉÒÔ°ïÖúÍØ¿íÄãµÄÁ˽⡣
±¾ÆªÎÄÕÂÖеÄÀý×ӵĽâ¾ö·½°¸ºÍËùÓдúÂë¶¼¿ÉÒÔÔÚÎÒµÄGitHub ¿âÖÐÕÒµ½¡£
ASP .NET Core Web API ¿ìËÙÈëÃÅ
ÈÃÎÒÃÇÒ»ÆðÀ´¿ìËÙÁ˽âһϠ.NET ºÍ ASP .NET Core¡£ASP .NET Core ÊÇ
Microsoft ´´ÔìµÄȫРWeb ¿ò¼Ü£¬ÒÔ±ã°ÚÍÑ×Ô ASP .NET 1.0 ÒÔÀ´Ò»Ö±´æÔÚµÄÒÅÁô¼¼Êõ¡£ASP
.NET Core 2.1 °ÚÍÑÕâЩÒÅÁôÒÀÀµ£¬´ÓÍ·¿ªÊ¼¿ª·¢¿ò¼Ü£¬Òò´Ë¿ÉÒÔ¸ø¿ª·¢ÈËÔ±Ìṩ¸ü¸ßµÄÐÔÄÜ£¬²¢ÇÒËüÊÇΪ¿çƽִ̨Ðжø¹¹½¨µÄ¡£
ʲôÊǵ¥Ôª²âÊÔ£¿
¶ÔÓÐЩÈËÀ´Ëµ£¬²âÊÔÄãµÄÈí¼þ¿ÉÄÜÊÇÒ»¸öеĸÅÄµ«ÊÇËüºÜ¼òµ¥¡£ÎÒÃÇ´Óµ¥Ôª²âÊÔ¿ªÊ¼¡£Î¬»ù°Ù¿Æ¶ÔÓÚËüµÄÑϸñ¶¨ÒåÊÇ¡°ÊÇÒ»ÖÖÈí¼þ²âÊÔ·½·¨£¬¶ÔÔ´´úÂëµÄ¶ÀÁ¢µ¥Ôª¡¢Ò»×é»ò¶à×鼯Ëã»ú³ÌÐòÄ£¿éÒÔ¼°Ïà¹ØµÄ¿ØÖÆÊý¾Ý¡¢Ê¹ÓóÌÐòºÍ²Ù×÷³ÌÐò¶¼½øÐвâÊÔ£¬ÒÔÁ˽âËüÃÇÊÇ·ñÊʺÏʹÓᱡ£ÎұȽÏϲ»¶µÄÊÇÒ»¸öÍâÐеĽâÊÍ£¬µ¥Ôª²âÊÔÊDZ£Ö¤ÔÚÄãÌí¼ÓÁËÐµĹ¦ÄÜ»ò½øÐÐÁËȱÏÝÐÞ¸´Ö®ºó£¬ÄãµÄ½â¾ö·½°¸ÖеĴúÂëÄÜÏñÔ¤ÆÚÒ»ÑùÖ´ÐС£ÎÒÃDzâÊÔÁËÒ»¸ö¼òµ¥µÄ´úÂëʾÀý£¬À´±£Ö¤Ëü·ûºÏÎÒÃǵÄÔ¤ÆÚ¡£ÈÃÎÒÃÇÀ´¿´Ò»Ïµ¥Ôª²âÊÔʾÀý£º
[Fact]
public async Task AlbumGetAllAsync()
{
// Arrange
// Act
var albums = await _repo.GetAllAsync();
// Assert
Assert.Single(albums);
} |
ÓÅÐãµÄµ¥Ôª²âÊÔÓÐÈý¸ö²¿·Ö×é³É¡£µÚÒ»¸öÊÇArrangeµÄ²¿·Ö£¬ÓÃÀ´ÉèÖòâÊÔÖпÉÄÜÐèÒªµÄÈκÎ×ÊÔ´¡£ÔÚÉÏÃæµÄÀý×ÓÖУ¬ÎÒûÓнøÐÐÈκÎÉèÖã¬ËùÒÔ
Arrange µÄ²¿·ÖÊÇ¿ÕµÄ (µ«ÎÒ»¹ÊÇΪËü±£ÁôÁË×¢ÊÍ)¡£µÚ¶þ¸ö²¿·ÖÊÇActµÄ²¿·Ö£¬ÓÃÀ´Ö´ÐвâÊԵIJ¿·Ö¡£ÔÚÎÒÃǵÄÀý×ÓÖУ¬ÎÒµ÷ÓÃÊý¾Ý¿âÖеÄר¼ÊµÌåÀàÐÍ£¬·µ»Øµ±Ç°Ê¹ÓõĿâÖеÄÊý¾ÝÔ´ÍêÕûµÄר¼ÊµÌå¡£µ¥Ôª²âÊÔµÄ×îºóÒ»¸ö²¿·ÖÊÇAssertµÄ²¿·Ö£¬ÓÃÀ´ÑéÖ¤´ý²âÊԵIJÙ×÷ÊÇ·ñÕýÈ·¡£¶ÔÓڸòâÊÔ£¬ÎÒ¼ìÑéÊÇ·ñ´ÓÊý¾Ý¿âÖзµ»ØÁËÒ»¸öר¼¡£
ÔÚ±¾ÎÄÖУ¬ÎÒ»áʹÓà xUnit ¹¤¾ß½øÐе¥Ôª²âÊÔ¡£xUnit ÊÇ .NET Framework ºÍÏÖÔÚµÄ
.NET Core µÄ¿ªÔ´°ü¡£ÎÒÃÇÐèÒª .NET Core °æ±¾µÄ xUnit£¬ÔÚÄã°²×° .NET
Core 2.1 SDK µÄʱºò¾ÍÒѾֱ½Ó»ñµÃÁË¡£Äã¿ÉÒÔͨ¹ý .NET Core cli Ö¸Áî dotnet
test£¬»òÊÇͨ¹ýÄãϲ»¶µÄ IDE£¨Èç Visual Studio 2017¡¢Visual Studio
Code »ò JetBrain µÄ Rider.£©ÖеÄÏîĿģ°åÀ´´´Ôìеĵ¥Ôª²âÊÔÏîÄ¿¡£

ͼ 1£ºÔÚ Visual Studio 2017 Öд´½¨Ðµĵ¥Ôª²âÊÔÏîÄ¿
ÏÖÔÚ£¬ÈÃÎÒÃÇÉîÈëµ½²âÊÔÄãµÄ ASP .NET Core Web API ½â¾ö·½°¸µÄµ¥Ôª²âÊÔÖÐÀ´¡£
Web API Òªµ¥Ôª²âÊÔһЩʲô£¿
Îҷdz£Ö§³ÖʹÓõ¥Ôª²âÊÔÀ´ÎªÄãµÄ¿Í»§±£Ö¤Îȶ¨ºÍ½¡×³µÄ API¡£µ«ÎÒÇå³þµØÖªµÀÒªÈçºÎʹÓõ¥Ôª²âÊÔ£¬ÖªµÀÒª²âÊÔʲô¶«Î÷¡£ÎÒÏàÐÅ£¬ÄãҪǡµ½ºÃ´¦µØ¶Ô½â¾ö·½°¸½øÐе¥Ôª²âÊÔ£¬¶ø²»Òª×ö¶àÓàµÄ²âÊÔ¡£ÕâÊÇʲôÒâË¼ÄØ£¿¿ÉÄÜÎҵĹ۵ã»áÒý·¢ºÜ¶àÆÀÂÛ£¬µ«ÊÇÎÒ²»Ì«×¢ÖØÒª
100% ¸²¸ÇÄãµÄ²âÊÔ¡£ÎÒÊÇ·ñÈÏΪÎÒÃÇÐèÒªÄܸ²¸Ç API ½â¾ö·½°¸ÖØÒª²¿·ÖµÄ²âÊÔ£¬µ¥¶À¸ô¿ªÃ¿¸öÇøÓò£¬±£Ö¤Ã¿¸ö´úÂë¶Î¶¼ÊÇÕýÈ·µÄ£¿µ±È»£¡ÎÒ»áÕâô×ö£¬ÕâÒ²ÊÇÎÒÏëÒªÌÖÂ۵ġ£
ÓÉÓÚÎÒÃǵÄʾÀý Chinook.API ºÜС£¬²¢ÇÒ¿ÉÒÔͨ¹ý¼¯³É²âÊÔÀ´Íê³É²âÊÔ£¨±¾ÎÄÉÔºóÌÖÂÛ£©£¬ÎÒ·¢ÏÖÔÚ
Domain ºÍ Data ÏîÄ¿ÖÐÎÒ×î¹Ø×¢µ¥Ôª²âÊÔ¡£ÎÒ²»»áÏêϸÌÖÂÛµ¥Ôª²âÊԵķ½·¨£¨ÒòΪÕâ¸öÎÊÌⳬ³öÁ˱¾ÎÄÌÖÂ۵ķ¶Î§£©¡£ÎÒÏëÒªÈÃÄã²»ÒÀÀµÓÚÉú²úÊý¾Ý¿âµÄÊý¾Ý£¬´Ó¶øÔÚ
Domain ºÍ Data ÏîÄ¿ÖнøÐиü¶àµÄ²âÊÔ¡£ÕâÊÇÎÒÃÇÏÂÒ»¸öÒªÌÖÂÛµÄÎÊÌ⣬ģÄâÊý¾ÝºÍ¶ÔÏó¡£
ΪʲôÔÚµ¥Ôª²âÊÔÖÐʹÓÃÄ£ÄâÊý¾ÝºÍ¶ÔÏó£¿
ÎÒÃÇÒѾÌÖÂÛÁËΪʲôÎÒÃÇÒª½øÐе¥Ôª²âÊÔ£¬µ¥Ôª²âÊÔһЩʲôÄÚÈÝ¡£½ÓÏÂÀ´£¬Á˽âÈçºÎ׼ȷµØµ¥Ôª²âÊÔ ASP
.NET Core Web API ½â¾ö·½°¸ÊǷdz£ÖØÒªµÄ¡£Êý¾ÝÊDzâÊÔ API µÄÖØµã¡£²âÊÔ¿ÉÔ¤²âµÄÊý¾Ý¼¯ÊǷdz£ÖØÒªµÄ¡£Õâ¾ÍÊÇΪʲôÎÒ²»ÍƼöʹÓÃÉú²úÊý¾Ý»òÕ߯äËû¿ÉÄÜËæ×Åʱ¼ä¸ù¾ÝÄãµÄÁ˽âºÍÈÏÖª»á¸Ä±äµÄÊý¾Ý¡£ÎÒÃÇÐèÒªÎȶ¨µÄÊý¾Ý¼¯À´±£Ö¤ËùÓе¥Ôª²âÊÔµÄÔËÐУ¬È·±£´úÂë¶ÎÖ®¼äµÄ²âÊÔÊÇÏàͬµÄ¡£±ÈÈç˵£¬ÔÚÎÒ²âÊÔ
Chinook.Domain ÏîÄ¿µÄʱºò£¬ÎÒÏëÒªµÃµ½ ID ÊÇ 42 µÄר¼£¬ÎÒÐèÒª±£Ö¤ËüµÄÈ·´æÔÚ£¬²¢ÓµÓÐÀàËÆ×¨¼Ãû³ÆÕâÑùµÄϸ½Ú£¬ºÍÒ»ÌõÒÕÊõ¼ÒÊý¾ÝÓйØÁª¹ØÏµ¡£ÎÒ»¹Ï£ÍûÈ·±£ÔÚÎÒ´ÓÊý¾ÝÔ´Öеõ½Ò»ÏµÁÐר¼Ê±£¬´óСÂú×ãÎÒ±àдµÄµ¥Ôª²âÊÔ¡£
Ðí¶àÒµÄÚÈËʿʹÓá°Ä£ÄâÊý¾Ý¡±ÕâÒ»ÊõÓïÀ´±íʾÕâÒ»ÀàÊý¾Ý¡£ÓкܶàΪµ¥Ôª²âÊÔ²úÉúÄ£ÄâÊý¾ÝµÄ·½·¨£¬ÎÒÏ£ÍûÄãÄÜ´´Ôì³ö¾¡¿ÉÄÜ¡°ÕæÊµ¡±µÄÊý¾Ý¼¯¡£Äã¸ø²âÊÔ´´ÔìµÄÊý¾ÝÔ½ºÃ£¬²âÊÔЧ¹ûÒ²»áÔ½ºÃ¡£ÎһὨÒéÄãÈ·±£Êý¾ÝûÓÐÒþ˽ÎÊÌ⣬²»°üº¬¹«Ë¾»ò¿Í»§µÄ¸öÈËÊý¾Ý»òÃô¸ÐÊý¾Ý¡£
ÒªÂú×ãÎÒÃǶÔÓڸɾ»¡¢Îȶ¨Êý¾ÝµÄÐèÇó£¬ÎÒµ¥¶À´´½¨ÁËÒ»¸öÏîÄ¿£¬·â×°Á˵¥Ôª²âÊÔÏîÄ¿µÄÄ£ÄâÊý¾Ý¡£ÈÃÎÒÃÇ³ÆÆäΪ
Chinook.MockData£¨¾ÍÏñÄãÄÜÔÚʾÀýÖп´µ½µÄÒ»Ñù£©¡£ÎÒµÄ MockData ÏîÄ¿¼¸ºõºÍ
Chinook.Data ÏîÄ¿Ïàͬ¡£ËüÃǶ¼ÓµÓÐÏàͬÊýÁ¿µÄÊý¾Ý¿â£¬¶¼ºÍÏàͬµÄ½Ó¿ÚÒÀ¸½¡£ÎÒÏ£Íû MockData
ÏîÄ¿´æ´¢ÔÚÒÀÀµ×¢Èë (DI) ÈÝÆ÷ÖУ¬ÕâÑù Chinook.Domain ÏîÄ¿¾Í¿ÉÒÔÏñÁ¬½Óµ½ÁËÉú²úÊý¾ÝÔ´ÄÇÑùµÃµ½Ê¹Óá£Õâ¾ÍÊÇΪʲôÎÒºÜϲ»¶ÒÀÀµ×¢Èë¡£Ëü¿ÉÒÔ°ïÖúÎÒͨ¹ýÅäÖÃÇл»
Data ÏîÄ¿£¬¶ø²»ÐèÒª×öÈκδúÂë±ä¸ü¡£
¼¯³É²âÊÔ£ºÊ²Ã´ÊÇÕë¶Ô Web API µÄвâÊÔ£¿
ÔÚÎÒÃÇΪ ASP .NET Core Web API ½â¾ö·½°¸Ö´Ðв¢ÑéÖ¤Á˵¥Ôª²âÊÔÖ®ºó£¬ÎÒÃÇÒª¿´Ò»¸öÍêÈ«²»Í¬ÀàÐ͵IJâÊÔ¡£ÎÒÏ£Íûµ¥Ôª²âÊÔ¿ÉÒÔÑéÖ¤²¢È·±£¶Ô½â¾ö·½°¸ÄÚ²¿×é¼þµÄÆÚÍû¡£µ±ÎÒÃǶÔÄÚ²¿²âÊÔµÄÖÊÁ¿ÂúÒâµÄʱºò£¬ÎÒÃÇÐèÒª´ÓÍⲿ½Ó¿Ú½øÐÐ
API ²âÊÔ£¬Õâ¾ÍÊÇÎÒÃÇËù˵µÄ¼¯³É²âÊÔ¡£
¼¯³É²âÊÔÐèÒªÔÚËùÓеÄ×é¼þÍê³ÉµÄʱºò±àд²¢Ö´ÐУ¬ËùÒÔÄãµÄ API ¿ÉÒÔͨ¹ýÕýÈ·µÄ HTTP ÏìÓ¦À´ÑéÖ¤¡£µ¥Ôª²âÊÔʱ²âÊÔµÄÊǵ¥¶À¸ôÀ뿪µÄ´úÂë¶Î£¬¶ø¼¯³É²âÊÔʱ²âÊÔµÄÊÇ
HTTP ¶ËµãÉÏÿ¸ö API µÄÕûÌåÂß¼¡£²âÊÔ½«»á×ñÑ API µÄÍêÕû¹¤×÷Á÷£¬´Ó API ÏîÄ¿µÄ¿ØÖÆÆ÷µ½ÓòÏîÄ¿¹ÜÀíÆ÷£¬×îºóµ½
Data ÏîÄ¿µÄ¿â£¨·µ»ØÀ´ÏìÓ¦£©¡£
´´Ô켯³É²âÊÔÏîÄ¿
ҪʹÓÃÄãÏÖÓеIJâÊÔ֪ʶ£¬¼¯³É²âÊÔ¹¦ÄÜÊÇ»ùÓÚÏÖÓеĵ¥Ôª²âÊÔ¿âµÄ¡£ÎÒ½«Ê¹Óà xUnit À´´´ÔìÎҵɲâÊÔ¡£ÔÚÎÒÃÇ´´½¨ÁËÃûΪ
Chinook.IntegrationTest µÄРxUnit ²âÊÔÏîĿ֮ºó£¬ÎÒÃÇÐèÒªÌí¼ÓºÏÊʵÄ
NuGet °ü¡£½« Microsoft.AspNetCore.TestHost °üÌí¼Óµ½ Chinook.IntegrationTest
ÏîÄ¿ÖÐÀ´¡£Õâ¸ö°üÖаüº¬ÁËÖ´Ðм¯³É²âÊÔµÄ×ÊÔ´¡£

ͼ 2£ºÌí¼Ó Microsoft.AspNetCore.TestHost NuGet °ü
½ÓÏÂÀ´£¬ÎÒÃÇ¿ÉÒÔ´´½¨µÚÒ»¸ö¼¯³É²âÊÔÀ´´ÓÍⲿÑéÖ¤ÎÒÃÇµÄ API¡£
´´½¨µÚÒ»¸ö¼¯³É²âÊÔ
ÒªÏë½øÐÐÎÒÃǽâ¾ö·½°¸ÖеÄËùÓÐ API Íⲿ²âÊÔ£¬ÎÒÒª´´½¨Ò»¸öÃûΪ API µÄÎļþ¼Ð£¬ÆäÖаüº¬Á˲âÊÔ¡£ÎÒ»¹ÐèÒªÔÚ
API ÓòÖиøÃ¿¸öʵÌåÀàÐÍ´´½¨ÐµIJâÊÔÀà¡£ÎÒÃǵÄÊ׸ö¼¯³É²âÊÔ½«»á¸²¸Çר¼ÊµÌåÀàÐÍ¡£
ÔÚ API Îļþ¼ÐÖд´½¨ÐµÄÀà AlbumAPITest.cs¡£Ö®ºóÎÒÃÇ»áÔÚÎļþÖÐÌí¼ÓÈçϵÄÃüÃû¿Õ¼ä¡£
using
Xunit;
using Chinook.API;
using Microsoft.AspNetCore.TestHost;
using Microsoft.AspNetCore.Hosting; |

ͼ 3£ºÊ¹ÓÃÖ¸Áî½øÐм¯³É²âÊÔ
ÏÖÔÚÎÒÃÇҪʹÓà TestServer À´ÉèÖÃÀ࣬ʹÓà HttpClient À´Ö´ÐвâÊÔ¡£ÎÒÃÇÐèÒªÃûΪ
_client£¬ÀàÐÍΪ HttpClient µÄ˽ÓбäÁ¿£¬ËüÊÇ»ùÓÚÔÚ AlbumAPITest ÀàÖеĹ¹Ô캯ÊýÖгõʼ»¯µÄ
TestServer ¶ø´´½¨µÄ¡£TestServer ÊÇСÐÍ web ·þÎñÆ÷µÄ°ü×°Æ÷£¬ÊÇ»ùÓÚ Chinook.API
Startup ºÍÐèÒªµÄ¿ª·¢»·¾³´´½¨µÄ¡£ÔÚÕâ¸öÀý×ÓÖУ¬ÎÒʹÓÿª·¢»·¾³¡£ÎÒÃÇÏÖÔھ߱¸ÁËÔËÐÐ API µÄ
web ·þÎñÆ÷£¬ÒÔ¼°Á˽âÈçºÎÔÚ TestServer Öе÷Óà API µÄ¿Í»§¶Ë¡£ÎÒÃÇ¿ÉÒÔ¿ªÊ¼±àд¼¯³É²âÊÔ´úÂëÁË¡£

ͼ 4£ºÎÒÃǵÚÒ»¸ö¼¯³É²âÊÔ£¬»ñµÃËùÓеÄר¼
³ýÁ˹¹Ô캯Êý´úÂëÖ®Í⣬ͼ 4 Öл¹Õ¹Ê¾Á˵ÚÒ»¸ö¼¯³É²âÊԵĴúÂë¡£AlbumGetAllTestAsync
·½·¨½«»á²âÊÔÑéÖ¤´Ó API »ñÈ¡ËùÓÐר¼µÄµ÷Ó᣾ÍÏñ֮ǰÌÖÂ۵ĵ¥Ôª²âÊÔÒ»Ñù£¬¼¯³É²âÊÔµÄÂß¼Ò²ÊÇÓÃÁË
Arrange¡¢Act ºÍ Assert¡£ÎÒÃÇÊ×ÏÈ´´½¨ HttpRequestMessage ¶ÔÏ󣬯äÖÐ
HTTP ×÷Ϊ InlineData ×¢ÊÍÖеıäÁ¿¶øÌṩ£¬URI ²¿·Ö±íʾ¶ÔÓÚËùÓеÄר¼µÄµ÷Óà (¡°/api/Album/¡±)¡£Ö®ºóÎÒÃÇ»áÈÃ
HttpClient _client ·¢ËÍ HTTP ÇëÇó£¬×îºó£¬ÎÒÃÇ»á¼ì²éÑéÖ¤ HTTP ÏìÓ¦ÊÇ·ñÂú×ãÎÒÃÇµÄÆÚÍû£¬ÔÚ±¾ÀýÖÐÊÇ
200¡£Í¼ 4 ÖÐÎÒչʾÁËÁ½ÖÖ¼ìÑé API µ÷Óõķ½·¨¡£Äã¿ÉÒÔʹÓÃÆäÖÐÈÎÒâÒ»ÖÖ£¬µ«ÎÒ¸üϲ»¶µÚ¶þÖÖ·½·¨£¬ÒòΪËüÔÊÐíÎÒÓÃÏàͬµÄģʽÀ´¼ìÑé¶ÔÌØ¶¨
HTTP ÏìÓ¦´úÂëµÄÏìÓ¦¡£
response.EnsureSuccessStatusCode();
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
|
ÎÒÃÇ»¹¿ÉÒÔ´´½¨ÐèÒª´Ó API ²âÊÔÌØ¶¨ÊµÌå¼üµÄ¼¯³É²âÊÔ¡£¶ÔÓÚÕâÀà²âÊÔ£¬ÎÒÃÇÐèÒªÔÚ InlineData
×¢ÊÍÖÐÌí¼Ó¶îÍâµÄÖµ£¬½«»áͨ¹ý AlbumGetTestAsync ·½·¨²ÎÊý´«µÝ¡£ÎÒÃǵÄвâÊÔ»áʹÓÃÏàͬµÄÂß¼£¬²¢Ê¹ÓúÍ֮ǰ²âÊÔÒ»ÑùµÄ×ÊÔ´£¬µ«ÊÇÎÒÃÇΪ
HttpRequestMessage ¶ÔÏóÔÚ API URI ¶ËÖд«µÝʵÌå¼ü¡£Äã¿ÉÒÔÔÚͼ 5 Öв鿴´úÂë¡£

ͼ 5£º×¨¼µÄµÚ¶þ¸ö¼¯³É²âÊÔ
ÔÚÄãΪ²âÊÔ API ´´ÔìÁËËùÓм¯³É²âÊÔÖ®ºó£¬ÐèҪͨ¹ý Test Runner À´ÔËÐÐËüÃÇ£¬²¢±£Ö¤ËüÃÇÈ«²¿Í¨¹ý¡£Äã´´½¨µÄËùÓвâÊÔÒ²¿ÉÒÔÔÚ
DevOps ³ÖÐø¼¯³É£¨CI£©¹ý³ÌÖÐÖ´ÐУ¬ÕâÑù¿ÉÒÔÔÚÕûÌ忪·¢ºÍ²¿Êð¹ý³ÌÖвâÊÔÄãµÄ API¡£ÏÖÔÚÐèÒªÓÐÖ´Ðз¾¶±£Ö¤ÄãµÄ
API ÔÚ¿ª·¢¡¢ÖÊÁ¿±£Ö¤ºÍ²¿Êð½×¶Î¶¼µÃµ½²âÊÔºÍά»¤£¬ÈÃÄãµÄ API ʹÓÃÕßÓµÓÐÁ¼ºÃÌåÑéµÄͬʱ²»·¢ÉúÒâÍâÇé¿ö¡£

ͼ 6£ºÔÚ Visual Studio 2017 ÖÐÔËÐм¯³É²âÊÔ
½áÂÛ
ÓµÓÐÁ¼ºÃÉè¼ÆµÄÒ»ÌײâÊԼƻ®£¬Ê¹Óõ¥Ôª²âÊÔÀ´×öÄÚ²¿²âÊÔ£¬Ê¹Óü¯³É²âÊÔÀ´ÑéÖ¤ API µ÷ÓþͺͿª·¢ ASP
.NET Core Web API ½×¶Î´´½¨¼Ü¹¹ÊÇÒ»ÑùÖØÒªµÄ¡£
|