Cómo hacer tests en el track de ReScript

Aprende a hacer tests de tus ejercicios de ReScript en Exercism


Descargar un ejercicio

Usa la CLI de Exercism para descargar el ejercicio en el que quieres trabajar.

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

A continuación, cambia al directorio del ejercicio.

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

Instalar las dependencias

Antes de ejecutar las pruebas, instala las dependencias del ejercicio.

npm install

Ejecutar las pruebas

Compila y ejecuta la suite de pruebas proporcionada usando exercism test o npm run test.

Entender los resultados de las pruebas

El ejecutor de pruebas muestra cada prueba con un estado de superada o fallida.

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 es lo que devolvió tu código. right es lo que esperaba la prueba.

Entender la estructura del ejercicio

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 es aquí un fichero de interfaz opcional. Cuando está presente, define las firmas de las funciones que tu solución debe cumplir y puede servirte como pista sobre qué implementar.

Por ejemplo, si la interfaz declara:

let hello: unit => string

Tu implementación debería definir:

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

Errores del compilador

Si tu código no compila, el compilador de ReScript produce mensajes de error detallados con la ubicación exacta y los tipos esperados.

  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.

Lee el mensaje de error con atención, porque normalmente señala directamente el problema.