Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎ²âÊÔ ASP.NET Core Web API
 
  4601  次浏览      27
 2019-1-31
 

 

±à¼­ÍƼö:

±¾ÎÄÀ´×Ô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 ½×¶Î´´½¨¼Ü¹¹ÊÇÒ»ÑùÖØÒªµÄ¡£

 

   
4601 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù