using System.Threading.Tasks; using Moq; using NUnit.Framework; using Tello_Drone; namespace TelloDroneUnitTests { public class MissionCommanderTests { private Mock _mockDroneFactory; private Mock _mockMission; private Mock _mockDrone; private Mock _mockDroneCommands; [SetUp] public void SetUp() { _mockDroneFactory = new Mock(); _mockMission = new Mock(); _mockDroneCommands = new Mock(); _mockDrone = new Mock(_mockDroneCommands.Object); } [Test] public void RunMissionTest() { _mockDroneCommands.Setup(x => x.Command()).Returns(true); _mockDroneFactory.SetupGet(x => x.CreateDrone).Returns(_mockDrone.Object); var missionCommander = new MissionCommander(_mockDroneFactory.Object); missionCommander.RunMission(_mockMission.Object); _mockMission.Verify(x => x.Run(It.IsAny()), Times.Once); } [Test] public void RunMissionSetupFailed() { _mockDroneCommands.Setup(x => x.Command()).Returns(false); _mockDroneFactory.SetupGet(x => x.CreateDrone).Returns(_mockDrone.Object); var missionCommander = new MissionCommander(_mockDroneFactory.Object); missionCommander.RunMission(_mockMission.Object); _mockMission.Verify(x => x.Run(It.IsAny()), Times.Never); } } }