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);
        }
Exemplo n.º 7
0
        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"]);
        }
Exemplo n.º 8
0
        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"]);
        }
Exemplo n.º 9
0
        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);
        }