TGViewer
Мобильная разработка Мобильная разработка @mobdevelop · 3.87K subscribers
Post #142 1.52K
iOS/Swift: подробное руководство по модульным и UI-тестам. Часть 2

Модульный тест

Во-первых, что такое «модульный тест»? Это процесс проверки небольших фрагментов кода для обеспечения его целостности. Проверим пользовательские модели: struct, class, protocol и т. д.

Предпочитаю создавать отдельный class, делая из XCTestCase подкласс, соответствующий каждой тестируемой модели.

Тестирование моделей декодирования
Начнем с тестирования моделей декодирования Repository и Response. Упрощаем тестирование: в цель testsDemoTests добавляем SampleData. Это json-файлы с примерами ответов. Возьмите их на странице GitHub или создайте свои.

Тестируем Repository:

/
// RepositoryTests.swift
// testsDemoTests
//
// Создано Itsuki 17.10.2023.
//

import XCTest
// 1
@testable import testsDemo

final class RepositoryTests: XCTestCase {

// 2
var sut: Repository!

override func setUpWithError() throws {

try super.setUpWithError()
// 3: инициализируем экземпляр
// sut = YourTestInstance()
}

override func tearDownWithError() throws {
try super.tearDownWithError()
// 5: очистка
sut = nil
}

// 4
func testRepositoryDecoding() throws {

let path = Bundle(for: ResponseTest.self).path(forResource: "sampleRepository", ofType: "json")!
let data = NSData(contentsOfFile: path)! as Data

let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
sut = try! decoder.decode(Repository.self, from: data)
XCTAssertEqual(sut.id, 44838949)
XCTAssertEqual(sut.fullName, "apple/swift")
XCTAssertEqual(sut.stargazersCount, 61951)
XCTAssertEqual(sut.language, "C++")

}

}


Присмотримся, что здесь происходит:

📌Продолжение
📌Часть 1
  • 👍 3
  • ❤ 1
More from @mobdevelop
  1. Sep 22, 2026Rune: нативный Kubernetes-клиент для macOS Rune помогает быстрее диагностировать кластеры…
  2. Sep 15, 2026🎉 Swift 6.4 уже вышел — и релиз получился заметно шире обычного обновления языка. Главное…
  3. Aug 31, 2026ReactOS 0.4.16 вышла с крупным набором обновлений. Главные изменения: - появился новый гра…
  4. Aug 19, 2026✔️ Апдейт ChatGPT: изолированный контекст в Projects, тесты для проверки знаний и правки д…
  5. Jul 12, 2026Docker Desktop на Mac давно ругают за прожорливость. Apple выкатила свой вариант container…
  6. Jun 23, 2026Apple фактически сделала Docker Desktop необязательным на Mac. И полностью бесплатно. Речь…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →