Unit testing در Web API

سه شنبه 1 تیر 1395

در این مقاله ما یاد خواهیم گرفت که چگونه ازUnit testing در Web API استفاده کنیم.Unit testing در فرآیند توسعه و برنامه نویسی یک نرم افزار نقش بسیار مهمی بازی میکند. با کمک Unit testing میتوانیم هر متد را به تنهایی مورد تست و بررسی قرار دهیم، اجرای یک متد در Unit testing تاثیری بر سایر متدها نخواهد داشت. منظور از unit کوچکترین بخش قابل تست در برنامه است مانند: تابع، اینترفیس، procedure، کلاسها و ... .

 Unit testing در Web API

Unit testing در فرآیند توسعه و برنامه نویسی یک نرم افزار نقش بسیار مهمی بازی میکند. با کمک Unit testing میتوانیم هر متد را به تنهایی مورد تست و بررسی قرار دهیم، اجرای یک متد در Unit testing  تاثیری بر سایر متدها نخواهد داشت. منظور از unit کوچکترین بخش قابل تست در برنامه است مانند: تابع، اینترفیس، procedure، کلاسها و ... .

unit testing معمولا بعد از یکپارچه سازی انجام میشود.حال بیایید در Web API، مرحله به مرحله Unit Testing را ایجاد کنیم.

یک برنامه MVC ایجاد کنید

مرحله اول:

به قسمت File, New سپس Project بروید.

مرحله دوم:

"ASP.NET MVC 4 Web Application" را از لیست انتخاب کنید، سپس نام برنامه خود را "UnitTestingProj" بگذارید و مسیر ذخیره سازی برنامه انتخاب کنید.

مرحله سوم:

حال در قسمت Template ، "Web API" را انتخاب کنید.

مرحله چهارم:

یک کنترلر از نوع API empty controller و کلاس زیر را به برنامه اضافه کنید.

1.	public class unittestController : ApiController  
2.	    {  
3.	        public List<city> Getcitylist()  
4.	        {  
5.	  
6.	            List<city> Lts = new List<city>();  
7.	  
8.	            Lts.Add(new city { cityid = 1, cityname = "تهران", Address = "شریعتی" });  
9.	            Lts.Add(new city { cityid = 2, cityname = "اصفهان", Address = "سی و سه پل" });  
10.	            Lts.Add(new city { cityid = 3, cityname = "خراسان رضوی", Address = "مشهد" });  
11.	            Lts.Add(new city { cityid = 4, cityname = "فارس", Address = "شیراز" });  
12.	            return Lts;  
13.	  
14.	        }  
15.	  
16.	        public class city  
17.	        {  
18.	            public int cityid { get; set; }  
19.	            public string cityname { get; set; }  
20.	            public string Address { get; set; }  
21.	  
22.	  
23.	        }  
24.	    }  

برای استفاده از unit testing  نیاز داریم که nuget package را به برنامه اضافه کنیم. بر روی پروژه خود راست کلیک کنید و گزینه Manage NuGet Packages را مانند تصویر زیر انتخاب کنید:

Microsoft ASP.NET Web API 2.2 Core package را در nuget جستجو کرده و آنرا نصب کنید.

یک کلاس دیگر با نام TestClass ایجاد کنید.

1.	public class testclass  
2.	    {  
3.	          
4.	 [TestMethod]  
5.	        public void testGetCityList()  
6.	        {  
7.	            try  
8.	            {  
9.	            var config = new HttpConfiguration();  
10.	            var Controller = new unittestController();  
11.	            var Route = config.Routes.MapHttpRoute("DefaultApi", "api/unittest");  
12.	             var RouteData = new HttpRouteData(Route, new HttpRouteValueDictionary { { "controller", "unittest" } });  
13.	              var Request = new HttpRequestMessage(HttpMethod.Get, "http://localhost:58068/api/unittest/9/9/9");  
14.	                Controller.ControllerContext = new System.Web.Http.Controllers.HttpControllerContext(config, RouteData, Request);  
15.	                Controller.Request = Request;  
16.	                Controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;  
17.	                GetUserProfileIdForErrorLog objUserProfileId = new GetUserProfileIdForErrorLog();  
18.	                objUserProfileId.UserProfileIdForError(2792);  
19.	                ErrorObj objerror = new ErrorObj();  
20.	                objerror.UserProfileCurrentStatus = "8";  
21.	                var respone = Controller.Getcitylist();  
22.	               // Assert.AreEqual(HttpStatusCode.OK, respone.StatusCode);  
23.	            }  
24.	          
25.	        catch (Exception ex)  
26.	        {  
27.	            Assert.Fail("Expected no exception, but got: " + ex.Message);  
28.	            throw;  
29.	        }      
30.	    }  

همه متدهای test شامل صفت TestMethod  می باشند. حال برای اجرای متد test به

Select Test -> Run -> All Tests بروید و عملیات تست را اجرا کنید.

آموزش asp.net mvc

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید