public async Task Disconnect_Success() { var eventraised = false; var host = "MyHost"; var token = "MyToken"; var autoresetevent = new AutoResetEvent(false); _nativeMqttClient.Setup(d => d.Disconnect()).Returns(Task.CompletedTask).Raises(d => d.Disconnected += null, EventArgs.Empty); var client = new HC2Client(_nativeMqttClient.Object, host, token); client.Disconnected += (sender, args) => { eventraised = true; autoresetevent.Set(); }; await client.Disconnect(); autoresetevent.WaitOne(TimeSpan.FromSeconds(2)).Should().BeTrue(); eventraised.Should().Be(true); _nativeMqttClient.Verify(d => d.Disconnect(), Times.Once); }