Тестування на треку ReScript

Дізнайтеся, як тестувати свої вправи з ReScript на Exercism


Завантаження вправи

Скористайтеся Exercism CLI, щоб завантажити вправу, над якою будемо працювати.

exercism download --track=rescript --exercise=hello-world

Потім перейдіть у каталог вправи.

cd /path/to/exercism/rescript/hello-world

Встановлення залежностей

Перш ніж запускати тести, встановіть залежності вправи.

npm install

Як запустити тести

Скомпілюйте та запустіть наданий набір тестів за допомогою exercism test або npm run test.

Як читати результати тестів

Засіб запуску тестів показує кожен запущений тест зі статусом успіху або невдачі.

1/3: no name given
  PASS - no name given
2/3: a name given
  FAIL - a name given
    ---
    operator: equal
    left:  One for you, one for me.
    right: One for Alice, one for me.
    ...
3/3: another name given
  FAIL - another name given
    ---
    operator: equal
    left:  One for you, one for me.
    right: One for Bob, one for me.
    ...

# Ran 3 tests (3 assertions)
# 1 passed
# 2 failed

left - це те, що повертає наш код. right - це те, чого очікує тест.

Структура вправи

two-fer/
├── src/
│   ├── TwoFer.res   // your solution goes here
│   └── TwoFer.resi  // the optional interface file containing signatures
├── tests/
│   └── TwoFer_test.res // your test suite
├── package.json // used to install project dependencies
└── ...

TwoFer.resi тут - це необовʼязковий файл інтерфейсу. Коли він присутній, він визначає сигнатури функцій, яким має відповідати наше рішення, і може слугувати підказкою щодо того, що реалізувати.

Наприклад, якщо інтерфейс оголошує:

let hello: unit => string

Наша реалізація має визначати:

let hello = () => "Hello, World!"

Помилки компілятора

Якщо наш код не компілюється, компілятор ReScript видає докладні повідомлення про помилки із зазначенням точного місця та очікуваних типів.

  We've found a bug for you!

  1 │ let x: string = 42

  This has type: int
  But it's expected to have type: string

  You can convert int to string with Int.toString.

Уважно прочитайте повідомлення про помилку, адже воно зазвичай указує прямо на проблему.