Как я могу написать надлежащие тесты для локального интерфейса уведомлений? - PullRequest
0 голосов
/ 31 мая 2019

Я использую Swift 5, Xcode 10.2
Я поддерживаю iOS версии 10 и выше

У меня есть модель уведомлений, которую я могу инициализировать некоторыми данными (заголовок, тело, действия и т. Д.) И статическим классом с функцией, которая принимает модель уведомлений и показывает локальное уведомление на основе его содержимого. Это все RX, и вызывающая функция может подписаться на возвращаемое значение, и она вызовет событие, когда пользователь взаимодействует с уведомлением (касание, отклонение, пользовательское действие и т. Д.).

Теперь я хочу протестировать этот класс, я очень новичок в написании тестов и RX, поэтому у меня возникли некоторые проблемы, когда я обдумываю это. Из-за пределов класса у меня есть только одна функция.
Я думал о том, что я на самом деле хочу протестировать, и все сводится к тому, чтобы показать уведомление вообще, и если механизм сопоставления со строго типизированным взаимодействием пользователей пойдет хорошо.
Другая проблема заключается в том, что я не всегда знаю, было ли предоставлено разрешение на показ локальных уведомлений и не было ли предоставлено, как проверить, все ли работает.

Как я могу разрешить показывать уведомления в тесте?

Как проверить, было ли показано уведомление?

Как мне взаимодействовать с уведомлением в тесте?

Извините за то, что задали три вопроса по цене одного, но они настолько взаимосвязаны, что я решил, что всем лучше не загромождать сайт тремя очень похожими вопросами.

1 Ответ

1 голос
/ 31 мая 2019

У вас нет границ для модульного тестирования, и вам нужно UI-тестирование.

Если вы хотите выполнить модульное тестирование, вам нужно создать тестируемые классы, в которых вы могли бы специально тестировать небольшие поведения, такие как, например, создает ли ваш init значения, которые вы ожидали, был ли определенный метод вызван после цепочки и т. Д.

Для реального тестирования, если уведомление показывалось и взаимодействовало с ним, вам нужно было бы углубиться в тестирование пользовательского интерфейса, где фактические инструкции зависят от того, как вы отображаете уведомление и т. Д. Тесты пользовательского интерфейса довольно просты для начала, Вы просто запускаете метод записи, а затем очищаете и добавляете дополнительную логику для проверки.

Это хорошие места для начала изучения UI-тестирования: https://developer.apple.com/library/archive/documentation/DeveloperTools/Conceptual/testing_with_xcode/chapters/09-ui_testing.html

https://www.raywenderlich.com/960290-ios-unit-testing-and-ui-testing-tutorial

https://www.swiftbysundell.com/posts/getting-started-with-xcode-ui-testing-in-swift

...