Проверки с помощью std.testing
expect, expectEqual и другие функции.
«Проверки с помощью std.testing» — бесплатный урок Zig Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Zig Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Zig Academy содержит 4 уроков всего.
Пространство имён testing
Вспомогательные средства для проверок в Zig находятся в std.testing. Присвойте ему короткое имя, чтобы каждая проверка в блоках тестов читалась проще.
const testing = std.testing;expect для логических значений
Самое простое вспомогательное средство — expect. Оно принимает одно логическое значение и завершает тест с ошибкой, если условие ложно.
try testing.expect(value > 0);Вспомогательные средства возвращают ошибки
Каждое вспомогательное средство для тестирования при сбое возвращает ошибку, поэтому перед ним всегда нужно ставить try. Благодаря этому тест останавливается и сообщает о проблеме.
expectEqual для значений
Для сравнения двух значений используйте expectEqual. Оно проверяет равенство и при сбое выводит как ожидаемое, так и фактическое значение.
try testing.expectEqual(5, add(2, 3));Сначала указывается ожидаемое значение
В expectEqual первый аргумент — ожидаемое значение, а второй — результат работы Вашего кода. Порядок аргументов определяет текст сообщения о сбое.
try testing.expectEqual(42, result);Сравнение срезов
Два среза равны, когда совпадают их элементы, а не указатели. Используйте expectEqualSlices и укажите тип элементов.
try testing.expectEqualSlices(u8, "hi", out);Сравнение строк
Для текста expectEqualStrings сравнивает два среза байтов и при различии выводит удобный для чтения список отличий — это отлично подходит для проверки вывода.
try testing.expectEqualStrings("ok", msg);Проверка ошибки
Иногда вызов должен завершиться сбоем. Оберните его в expectError, чтобы проверить, что он возвращает определённую ошибку, а не значение.
try testing.expectError(error.Bad, parse("x"));Приближённое сравнение чисел с плавающей точкой
Числа с плавающей точкой редко совпадают точно. Используйте expectApproxEqAbs с небольшим допуском, чтобы крошечные ошибки округления не приводили к сбою теста.
try testing.expectApproxEqAbs(1.0, x, 0.001);Чтение вывода при сбое
Когда проверка завершается сбоем, Zig выводит ожидаемое и фактическое значения прямо в отчёте. Это сравнение обычно сразу указывает на ошибку.
Выберите подходящее средство проверки
Выбирайте средство по типу данных: expectEqual — для отдельных значений, средства для срезов и строк — для последовательностей, а expectError — для пути с ошибкой.
Быстрая проверка
Вам нужно проверить, что два текстовых значения в тесте полностью совпадают. Какое средство лучше всего подойдёт?
Итоги
Вы изучили набор средств std.testing: expect, expectEqual, проверки срезов и строк, а также expectError. Перед каждым из них нужно ставить try. ✅
Часто задаваемые вопросы
Урок «Проверки с помощью std.testing» бесплатный?
Да — полный текст урока «Проверки с помощью std.testing» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Zig Academy, подпишись на CoddyKit PRO. Курс Zig Academy содержит 4 уроков всего.
Чему я научусь в уроке «Проверки с помощью std.testing»?
expect, expectEqual и другие функции. Ты практикуешь Zig Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Zig Academy?
Предыдущий опыт не требуется. Zig Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Проверки с помощью std.testing»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Zig Academy?
Да. Каждый урок Zig Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Написание блоков test
- Проверки с помощью std.testing
- Распределитель для тестирования обнаруживает утечки
- Запуск и фильтрация тестов