public void Can_Save_Valid_Comment() { // Организация - создание имитированного хранилища Mock<ICommentRepository> mock = new Mock<ICommentRepository>(); Mock<ILikeRepository> mockLike = new Mock<ILikeRepository>(); var context = new Mock<HttpContextBase>(); var request = new Mock<HttpRequestBase>(); request.Setup(r => r.UrlReferrer).Returns(new Uri("http://test.com")); context.Setup(c => c.Request).Returns(request.Object); // Организация - создание контроллера CommentController target = new CommentController(mock.Object, mockLike.Object); target.ControllerContext = new ControllerContext(context.Object, new System.Web.Routing.RouteData(), target); // Организация - создание комментария Comment comment = new Comment { Id = 1, CreateDate = DateTime.Now, Username = "******", Text = "Test Text", PostId = 1 }; // Действие - сохраняем комментарий ActionResult result = target.Save(comment); // Утверждение - проверка того, что к хранилищу производится обращение mock.Verify(m => m.Save(comment)); // Утверждение - проверка типа результата метода Assert.IsNull(((PartialViewResult)result).Model); Assert.IsInstanceOfType(result, typeof(PartialViewResult)); }
public void Cannot_Save_Invalid_Comment() { // Организация - создание имитированного хранилища Mock<ICommentRepository> mock = new Mock<ICommentRepository>(); Mock<ILikeRepository> mockLike = new Mock<ILikeRepository>(); // Организация - создание контроллера CommentController target = new CommentController(mock.Object, mockLike.Object); // Организация - создание комментария Comment comment = new Comment { Id = 1, CreateDate = DateTime.Now, Username = "******", Text = "Test Text", PostId = 1 }; // Организация - добавление ошибки в состояние модели target.ModelState.AddModelError("error", "error"); // Действие - сохраняем комментарий ActionResult result = target.Save(comment); // Утверждение - проверка того, что к хранилищу не производится обращение mock.Verify(m => m.Save(It.IsAny<Comment>()), Times.Never()); // Утверждение - проверка типа результата метода Assert.IsNotNull(((PartialViewResult)result).Model); Assert.IsInstanceOfType(result, typeof(PartialViewResult)); }