Модульное тестирование Swift со сторонней библиотекой

#ios #swift #unit-testing #localytics

#iOS #swift #модульное тестирование #localytics

Вопрос:

Я использую Localytics в своем приложении, которое в основном представляет собой просто API, который можно использовать для отправки аналитических данных на сервер.
https://docs.localytics.com/dev/ios.html#install-sdk-ios

Я работаю в проекте, где мы должны модульно тестировать каждый отдельный файл, чтобы убедиться, что покрытие кода составляет не менее 90%.
Поскольку localytics — это внешняя библиотека, у меня есть оболочка вокруг нее для использования API.

Рассмотрим простой метод localytics :

 func tagScreen(screenName: String) {
    Localytics.tagScreen(screenName) 
}
  

Как я могу модульно протестировать эту оболочку?
Есть ли какие-либо предложения?
Как мы можем написать Mocks для описанного выше метода?

Ответ №1:

Если вы хотите протестировать оболочку: as Localytics имеет статические функции для взаимодействия, я бы выбрал что-то вроде:

 class LocalyticsWrapper {
  private let tagFunc: (String) -> Void
  init(tagFunc: @escaping (String) -> Void = Localytics.tagScreen) {
    self.tagFunc = tagFunc
  }
  func tagScreen(screenName: String) {
    // maybe some pre-formatting done here or something
    tagFunc(screenName) 
  }
}
  

Теперь вы можете внедрить макет функции и протестировать оболочку