Бета · редакция 2026.10-beta1 · MCP 2026-07-28
Контрактные и негативные тесты
L42 · MCP 2026-07-28 · открытая бета · редакция 2026.10-beta1
Я хочу, чтобы обновление зависимости ломало тест, а не рабочий сценарий читателя. Контрактный тест проверяет observable поведение: envelope, schema, версии, результаты и переходы состояний. Негативный тест показывает, что опасный запрос действительно отклоняется.
Предварительно: L07 · L18 · L28 · L39
Как я это использую
Сохраните golden fixtures modern и legacy отдельно. Минимальный набор: tools/list и call, неверный id, отсутствие capability, decline/cancel, MRTR retry с подменённым state, wrong audience, issuer mismatch и повтор записи после обрыва. Для OAuth используйте локальный fake AS и фиктивные credentials. Не делайте CI зависимым от личного аккаунта или платной модели.
Разбираем конкретный контракт
Это учебный fixture: поля с доменом .example и идентификаторы вымышлены. Если показан фрагмент, его нужно поместить в соответствующий envelope выбранного профиля.
{
"cases": [
{
"input": "wrong audience",
"expected": "reject"
},
{
"input": "decline",
"expected": "no write"
},
{
"input": "same operation key twice",
"expected": "one effect"
},
{
"input": "valid read",
"expected": "complete"
}
]
}
Лаборатория · L42
Измените условия, проверьте результат и разберите ошибку. Все адреса и данные учебные.
Что легко сломать
В редакторе выберите ожидаемый исход для нескольких повреждений. Reference-проект рядом с исходниками курса выполняет локальные проверки без production daemon. Сквозной тест с настоящим клиентом дополняет контрактные fixtures, но не заменяет их.
Практика и самопроверка
Выбрать кейсы для malformed input, версии, retry и auth. Восстановить тест, который ошибочно давал зелёный результат.
Я советую сначала предсказать результат, затем изменить один параметр в лаборатории и объяснить разницу. Сохраните небольшой fixture с нормальным и ошибочным случаем для своего проекта. Тренажёр открыт без регистрации; для сохранения ответов на тесты и завершения урока войдите в аккаунт.
В конце страницы — три вопроса. После правильных ответов можно завершить урок; ошибка в следующей тренировке не стирает уже полученное подтверждение этой редакции теста.
Попробовать локально
Скачать reference-проект с lockfile и тестами (после входа). Распакуйте в отдельную папку, используйте Node.js 22.14 или новее.
npm ci
npm test
npm start
npm start запускает локальный stdio-сервер задач. Остановите его после практики. Тесты используют официальный TypeScript SDK v2.3.1, проверяют современный HTTP handler, MRTR, отказ и подмену состояния. Fake AS проверяет PKCE, issuer, audience и одноразовый code без внешнего аккаунта. Это учебный проект: production требует долговременного хранилища, настоящей проверки токенов и транзакционной идемпотентности.
На что я опирался
Профиль и ссылки проверены 15 октября 2026. Core, deprecated compatibility и extensions в этом курсе помечены отдельно. Примеры объясняют выбранные сценарии; для реализации сверяйте нормативные MUST/SHOULD и schema соответствующей версии.
Проверка знаний
Читайте свободно. Войдите, чтобы отвечать и сохранять прогресс.