Об этом проекте
# 📸 SnapshotTesting
Приятное тестирование снимков на Swift. Эта библиотека позволяет писать тесты снимков для любого значения, в любом формате, на любой платформе Swift. Она поддерживает представления, контроллеры представлений, URL-запросы, значения Encodable и многое другое.
## Использование
После установки дополнительная настройка не требуется. Импортируйте модуль `SnapshotTesting` и вызовите функцию `assertSnapshot`.
```swift
import SnapshotTesting
import Testing
@MainActor
struct MyViewControllerTests {
@Test func myViewController() {
let vc = MyViewController()
assertSnapshot(of: vc, as: .image)
}
}
```
При первом запуске утверждения снимок автоматически записывается на диск, и тест завершается неудачей, выводя путь к файлу только что записанного эталона. При повторных запусках теста этот эталон загружается и сравнивается со значением во время выполнения. Сбои можно inspect из Report Navigator в Xcode или путём проверки URL-адресов файлов.
Вы можете записывать новые эталоны, настраивая снимки inline или используя инструмент `withSnapshotTesting`.
## Снимок чего угодно
В отличие от большинства библиотек тестирования снимков, ограниченных `UIImage` для `UIView`, SnapshotTesting работает с любым форматом любого значения на любой платформе Swift. Функция `assertSnapshot` принимает значение и любую стратегию снимков, которую это значение поддерживает.
Тестирование представлений обладает широкими возможностями настройки. Вы можете переопределять коллекции трейтов и генерировать независимые от устройства снимки из одного симулятора.
Доступные стратегии снимков включают:
- `.image` для представлений и контроллеров представлений
- `.recursiveDescription` для текстового представления иерархий представлений
- `.raw` для URL-запросов
- `.json` и `.plist` для значений `Encodable`
- `.dump` для любого значения с использованием его зеркала
## Возможности
- Десятки стратегий снимков
- Написание собственных стратегий снимков
- Настройка не требуется
- Более автоматизированный подход: новые снимки записываются автоматически
- Без подклассов: утверждения из любого тест-кейса XCTest или спецификации Quick
- Независимые от устройства снимки
- Полноценная поддержка Xcode с различиями изображений в виде вложений XCTest
- Поддержка любой платформы, поддерживающей Swift (iOS, Linux, macOS, tvOS)
- Поддержка SceneKit, SpriteKit и WebKit
- Поддержка `Codable`
- Интеграция с пользовательскими инструментами сравнения
## Установка
### Xcode
Добавьте пакет через Swift Packages, убедившись, что он добавлен в тестовую цель.
### Swift Package Manager
Добавьте пакет как зависимость в `Package.swift` и добавьте `SnapshotTesting` в вашу тестовую цель.
## Плагины
Несколько плагинов сообщества расширяют функциональность, включая тестирование доступности, симуляцию дальтонизма, тестирование миграции баз данных SQLite, матчеры Nimble, снимки превью SwiftUI, тестирование снимков HTML и многое другое.
## Связанные инструменты
Вдохновлённая `iOSSnapshotTestCase` и Jest, эта библиотека привносит обобщённое тестирование снимков в Swift с отточенным пользовательским опытом.
## Лицензия
Выпущена под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.