Наиболее распространенный подход к тестированию такого типа клиента службы D-Bus - это запуск его с поддельной сессионной шиной D-Bus, в которой работает фиктивная реализация службы Spotify (управляемая вашим тестовым кодом).
Вы можете использовать GTestDBus
для создания фиктивной шины сеанса, а затем использовать обычные API-интерфейсы GDBus для предоставления объекта D-Bus.Создайте Gio.DBusConnection
, связанный с адресом, возвращаемым g_test_dbus_get_bus_address()
, затем предоставьте объект на нем по пути объекта D-Bus /org/mpris/MediaPlayer2
, реализуя по крайней мере свойства org.freedesktop.DBus.Properties
и возвращая ложные данныедля свойств, которые запрашивает ваш тестируемый код.
Тестируемый код должен использовать фиктивную сессионную шину при запуске под тестовым набором, потому что GTestDBus
переопределяет переменную среды DBUS_SESSION_BUS_ADDRESS
, которую GIOиспользует (по умолчанию) поиск адреса реальной шины сеанса.