Тестування
Цей розділ містить стратегії перевірки та тестування, процеси та тестові сторінки, які використовуються для тестування вебсайту та розгортання живих перевірок.
Цей розділ знаходиться в стадії розробки.
Тестові твердження
Мета
Коли тест завершується невдало, у вихідних даних має бути чітко видно, що саме перевірялося, а також має бути показано чітке порівняння фактичних і очікуваних значень, без довгих рукописних повідомлень.
Наприклад, уникайте:
assert.ok(a === b, `expected ${a} to be ${b}`);
Натомість використовуйте:
assert.strictEqual(status, expectedStatus, 'HTTP status');
Настанови
Пункти нижче використовують вбудований механізм node:test та API assert Node, оскільки саме їх використовують кілька наших тестових наборів. Ті самі ідеї застосовуються в інших тестових фреймворках: віддавайте перевагу твердженням, які дають чіткі відмінності, тримайте контекст помилок коротким і конкретним, і виділяйте спільні допоміжні функції, коли одна й та сама перевірка повторюється.
- Віддавайте перевагу
assert.strictEqualзамістьassert.equalдля перевірок примітивів, де важлива строгість і якість відмінностей. - Додавайте короткий третій аргумент як контекст, наприклад
HTTP status,Content-Type,Location,Request body. - Використовуйте
assert.match, коли регулярний вираз може чіткіше передати намір, ніжincludesабо ланцюжокokлогіки. - Розміщуйте спільні допоміжні функції тверджень у модулі, який імпортується тестовими наборами, що їх використовують, розташованими поруч із цими тестами, замість копіювання по файлах. Інші невеликі, лише для тестування утиліти можуть жити в тому ж модулі, коли він залишається сфокусованим (наприклад
assertVaryIncludesAcceptуnetlify/edge-functions/lib/test-helpers.ts).