Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Swift : unit test, business logic, mock

Писал ли ты unit-тесты для модулей с бизнес-логикой?

Вопрос проверяет опыт написания модульных тестов для изолированной логики без UI и зависимостей от внешних сервисов.

Короткий ответ

Да, для бизнес-логики создают тесты на XCTest, выносят логику в сервисы или ViewModel без UIKit, используют заглушки (mocks) и фейковые репозитории. Это позволяет проверять алгоритмы и условия без запуска приложения.

Длинный ответ

Выделение тестируемого кода:

  • Логика вынесена в классы/структуры без UIViewController.

  • Все зависимости передаются через протоколы.

Моки и заглушки:

  • Протоколы RepositoryProtocol, NetworkServiceProtocol заменяются на тестовые реализации.

  • Позволяет вернуть предсказуемые данные.

Пример теста:

class AuthServiceTests: XCTestCase {
    	func testLoginSuccess() {
        	let mockAPI = MockAPI(loginResult: .success(User(id:1)))
        	let service = AuthService(api: mockAPI)
        	let exp = expectation(description: "Login")
        	service.login("u","p") { result in
            		switch result {
            		case .success(let user): XCTAssertEqual(user.id, 1)
            		case .failure: XCTFail()
           		 }
            		exp.fulfill()
        	}
        	wait(for: [exp], timeout: 1)
    	}
}

Преимущества:

  • Локализация ошибок в логике.

  • Быстрый обратный фидбэк без эмулятора.

Вывод:
Unit-тесты бизнес-логики повышают надёжность и упрощают рефакторинг, когда сервисы и репозитории отделены через протоколы и легко заменяются в тестах.

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    6

Навыки

  • Swift

    Swift

Ключевые слова

#unit test

#business logic

#mock

Подпишись на iOS Developer в телеграм

  • Аватар

    iOS Guru

    Roman Isakov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.