public void AttackOnShip_ShouldBeOkAndHitOutcome() { var attackRequest = new AttackRequest() { Coordinate = new Coordinate(3, 5) }; var boardId = Guid.NewGuid(); var attackOutcome = AttackOutcome.Hit; var gameplayServiceMock = new Mock <IGameplayService>(); gameplayServiceMock.Setup(m => m.AttackOpponent(boardId, attackRequest)).Returns(attackOutcome); var gameplayController = new GameplayController(gameplayServiceMock.Object); var response = gameplayController.AttackOpponent(boardId, attackRequest); Assert.IsTrue(response.Result is OkObjectResult); var responseAttackOutcome = ((response.Result as OkObjectResult)?.Value as AttackResult).Outcome; Assert.AreEqual(attackOutcome, responseAttackOutcome); gameplayServiceMock.Verify(mock => mock.AttackOpponent(boardId, attackRequest), Times.Once()); }