public async Task FeedingSuccessfullForSingleClosedSlotAsync() { var mocker = new AutoMocker(); var sensor = mocker.GetMock <IDigitalSensor>(); var gate = mocker.GetMock <IGateDevice>(); var isClosed = true; var slot = _mocker.GetSlotWithGateAndSensor("dummy", gate, sensor); gate .Setup(g => g.OpenGateAsync()) .Callback(() => { isClosed = false; }) .Returns(Task.CompletedTask) .Verifiable(); sensor .Setup(s => s.Read()) .Returns(() => { return(isClosed); }) .Verifiable(); var manager = _mocker.CreateInstance <DefaultFeedingManager>(); manager.Slots = new[] { slot }; var result = await manager.TryFeedAsync(); _mocker.VerifyAll(); Assert.True(result.Succeeded); Assert.Equal(slot.Name, result.SlotUsed); }