Δοκιμές στη διαδρομή 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.

Διάβασε προσεκτικά το μήνυμα σφάλματος, γιατί συνήθως δείχνει κατευθείαν στο πρόβλημα.