public void GetPartialViewTest() { // Arrange int trainId = 1; var expected = new { TrainId = 1, TrainName = "XY-3443", Destination = "Torrance", DepartureTime = new DateTime(2018, 10, 1) }; var sut = new MVCDemoController(null); // Act var actual = sut.GetPartialView(trainId) as PartialViewResult; var result = actual.Model as Train; // 其他可測試項目 //actual.TempData["Key"] //actual.ViewData["Key"] //actual.ViewName // Assert expected.ToExpectedObject().ShouldMatch(result); }
public void GetJsonTest() { // Arrange var sut = new MVCDemoController(null); // Act var actual = sut.GetJson() as JsonResult; //匿名型別的測試方式 //AssemblyInfo 加入 [assembly: InternalsVisibleTo("Lab-MVC.Tests")] 就可以用 dynamic //https://stackoverflow.com/questions/8318845/how-to-unit-test-jsonresult-and-collections-in-mstest/9782001 //可用 ToExpectedObject() 驗證 var expected = new { Name = "Miles" }; expected.ToExpectedObject().ShouldMatch(actual.Data); //var a = actual.Data as dynamic; //var b = a.Name; // 可測試項目 var a = actual.Data; var c = actual.ContentEncoding; var d = actual.ContentType; var e = actual.JsonRequestBehavior; var f = actual.MaxJsonLength; var g = actual.RecursionLimit; var k = actual.ToUsefulString(); //轉型可以測試讀取的 file name //var c = ((FilePathResult)actual).FileName; // Assert //expected.ToExpectedObject().ShouldMatch(result); }
public void GetHttpNotFoundTest() { // Arrange var sut = new MVCDemoController(null); // Act var actual = sut.GetHttpNotFound() as HttpNotFoundResult; var a = actual.StatusCode; var b = actual.StatusDescription; }
public void GetRedirectTest() { // Arrange var sut = new MVCDemoController(null); // Act var actual = sut.GetRedirect() as RedirectResult; var a = actual.Permanent; var b = actual.Url; }
public void GetRedirectToRouteTest() { // Arrange var sut = new MVCDemoController(null); // Act var actual = sut.GetRedirectToRoute() as RedirectToRouteResult; var a = actual.Permanent; var b = actual.RouteName; var c = actual.RouteValues["action"]; var d = actual.RouteValues["controller"]; }
public void GetJavaScriptResultTest() { // Arrange string expected = "alert('hi')"; var sut = new MVCDemoController(null); // Act var actual = sut.GetJavaScript() as JavaScriptResult; // 只有 actual.Script 可以測試 Assert.Equal(expected, actual.Script); }
public async Task TestMVCSearchGoogle_GivenInvalidURLToMatch() { var mockService = new Mock <IGoogleSearchService>(); var request = Fixture.Create <GoogleSearchRequest>(); request.UrlToFind = "invalid"; var controller = new MVCDemoController(mockService.Object, LoggerFactory); var result = await controller.SearchGoogle(request) as ViewResult; Assert.IsNotNull(result); Assert.AreEqual("Invalid URL to find", result.ViewData["SearchResults"]); }
public async Task TestMVCSearchGoogle_GivenInvalidModel() { var mockService = new Mock <IGoogleSearchService>(); var controller = new MVCDemoController(mockService.Object, LoggerFactory); controller.ModelState.AddModelError("error", "invalid model"); var request = Fixture.Create <GoogleSearchRequest>(); var result = await controller.SearchGoogle(request) as ViewResult; Assert.IsNotNull(result); Assert.AreEqual("Invalid request", result.ViewData["SearchResults"]); }
public async Task TestMVCSearchGoogle_GivenOtherExceptionOccurs() { var mockService = new Mock <IGoogleSearchService>(); var request = Fixture.Create <GoogleSearchRequest>(); Fixture.Customize <GoogleSearchRequest>(x => x.With(u => u.UrlToFind, "http://www.yahoo.com")); mockService.Setup(x => x.GetSearchResults(request)).ThrowsAsync(new Exception("Error")); var controller = new MVCDemoController(mockService.Object, LoggerFactory); var result = await controller.SearchGoogle(request) as StatusCodeResult; Assert.IsNotNull(result); Assert.AreEqual(500, result.StatusCode); }
public void GetContentTest() { // Arrange var sut = new MVCDemoController(null); // Act var actual = sut.GetContent() as ContentResult; // 可測試項目 var a = actual.Content; var b = actual.ContentEncoding; var c = actual.ContentType; // Assert //expected.ToExpectedObject().ShouldMatch(result); }
public void GetFileTest() { // Arrange var sut = new MVCDemoController(null); // Act var actual = sut.GetContent() as FileResult; // 可測試項目 var a = actual.ContentType; var b = actual.FileDownloadName; //轉型可以測試讀取的 file name //var c = ((FilePathResult)actual).FileName; // FilePathResult:回應一個實體檔案的內容。 多 FileName 屬性可以用 // FileContentResult:回應一個byte[] 內容。 多 FileContents 屬性可以用 // FileStreamResult:回應一個Stream 內容。 多 FileStream 屬性可以用 // Assert //expected.ToExpectedObject().ShouldMatch(result); }