public void ViewMessage() { // Arrange Mock <Message> messageMock = new Mock <Message>(); Mock <User> toUserMock = new Mock <User>(); toUserMock.Expect(u => u.UserName) .Returns("To username").Verifiable(); Mock <User> userMock = new Mock <User>(); userMock.Expect(u => u.UserName) .Returns("From username").Verifiable(); // Setup message mock messageMock.Expect(m => m.RecipientUser) .Returns(toUserMock.Object).Verifiable(); messageMock.Expect(m => m.SenderUser) .Returns(userMock.Object).Verifiable(); messageMock.Expect(m => m.Subject) .Returns("Message Subject").Verifiable(); DateTime messageDate = new DateTime(2009, 2, 10, 6, 54, 3); messageMock.Expect(m => m.Time) .Returns(messageDate).Verifiable(); messageMock.Expect(m => m.Content) .Returns("Message Content").Verifiable(); userMock.Expect(u => u.GetMessage(50)) .Returns(messageMock.Object).AtMostOnce().Verifiable(); Mock <GameManager> managerMock = new Mock <GameManager>(userMock.Object); CommunicationController controller = new CommunicationController(managerMock.Object); // Act ActionResult result = controller.ViewMessage(50, false); // Assert Assert.That(result, Is.TypeOf(typeof(ViewResult)), "Should return a view"); Assert.That(controller.ModelState.IsValid, "No errors should be returned"); ViewResult viewResult = (ViewResult)result; Assert.That(viewResult.ViewData["From"], Is.EqualTo("From username"), "From field should match from user name"); Assert.That(viewResult.ViewData["To"], Is.EqualTo("To username"), "To field should match target user name"); Assert.That(viewResult.ViewData["Subject"], Is.EqualTo("Message Subject"), "Subject field should match message subject"); Assert.That(viewResult.ViewData["Time"], Is.EqualTo(messageDate), "To field should match target user name"); Assert.That(viewResult.ViewData["Content"], Is.EqualTo("Message Content"), "Content field should match message content"); managerMock.Verify(); }