RxSwift Наблюдение за контрольными случаями на поддельных UserDefaults - PullRequest
1 голос
/ 23 июня 2019

Я наблюдаю за изменением значения в userDefaults

userDefaults.rx.observe(Int.self, option.userDefaultsKey)

Для модульного тестирования я сделал userDefaultsMock, я не понимаю, как излучать, когда значение обновляется или устанавливается для этих конкретных ключей

 override func setValue(_ value: Any?, forKey key: String) {
        tempArray[key] = value
    }

Ответы [ 2 ]

0 голосов
/ 25 июня 2019

На самом деле я не мог высмеять rx.observe, но немного поработал, чтобы выполнить.

Я использовал UserDefaults, но с suiteName, поэтому не беспокоит standard database

Таким образом, этот трюк помог мне, так как наблюдаемый получил уведомление.

Я получил идею от https://medium.com/@davidlin_98861/testing-userdefaults-cd86849fd896

0 голосов
/ 23 июня 2019

Наблюдаемая цепочка начинается с побочного эффекта (такого как observe(_:_:), который вы опубликовали) и заканчивается побочным эффектом (что бы ни было в подписке.) Все, что находится между началом цепочки и концом, является логикой [ 1]. Переместите эту логику в отдельную функцию, чтобы вы могли проверить ее без использования макета.

[1] Пара исключений из этого правила: do() вызовы и flatMap вызовы. Все остальное - логика, которую нужно проверить.

...