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));
        }