Cześć,
Chciałbym napisać unit testy dla asynchronicznego klienta MQTT. Załączam link z kodem dla zobrazowania:
godbolt
Klasa Connection docelowo będzie implementacją biblioteki mosquito. Założeniem jest, że klasa połączenia będzie miała wątek przetwarzający operacje asynchroniczne, stąd metoda Run() uruchamiana za wysłaniem requesta o połączenie (tutaj metoda Connect()). Metoda Client::Connect() musi być blokująca ze względu na dalsze wykorzystanie klienta w programie, jednak przez prawdopodobnie zrąbany design dla unit testów nie jestem w stanie wywołać
Chciałbym napisać unit testy dla asynchronicznego klienta MQTT. Załączam link z kodem dla zobrazowania:
godbolt
Klasa Connection docelowo będzie implementacją biblioteki mosquito. Założeniem jest, że klasa połączenia będzie miała wątek przetwarzający operacje asynchroniczne, stąd metoda Run() uruchamiana za wysłaniem requesta o połączenie (tutaj metoda Connect()). Metoda Client::Connect() musi być blokująca ze względu na dalsze wykorzystanie klienta w programie, jednak przez prawdopodobnie zrąbany design dla unit testów nie jestem w stanie wywołać




















1. W ciele testu definiujesz promise.
2. Związany z nim future zwracasz z metody Connect().
3. Przy mockowaniu metody Run() musisz zdefiniować akcję która ustawi wartość promise.