了解如何在 Exercism 上測試你的 Pyret 練習。
順利下載練習之後,你需要安裝 Node.js 模組才能執行測試:
cd /path/to/exercise
npm install
接著把含有pyret命令列工具的目錄加入你的 $PATH
# bash
PATH="./node_modules/.bin:$PATH"
# zsh
path=(./node_modules/.bin $path)
# fish
fish_add_path ./node_modules/.bin
練習目錄裡會有幾個檔案,但其中最重要的 2 個是你的解答檔和測試檔。 在下面的範例中,我們下載了閏年練習。
leap/
├── leap.arr # Solution file - your code goes here
├── leap-test.arr # Test cases for the exercise
要執行測試,如果你已經下載官方的 Exercism CLI,可以使用exercism test,或是執行pyret leap-test.arr。
Pyret 會執行測試套件,其中包含一連串標記的check區塊,這些區塊會用特定的輸入和預期結果來測試你的解答檔。
這個過程中很關鍵的一點,就是明確匯出你部分的程式碼,讓測試套件能看到它們。
這個軌道上的測試會匯入你的檔案,因此可以存取你程式碼中明確匯出的任何內容。
要匯出變數,你需要在檔案開頭加入 provide 敘述。
下面的 2 個片段是匯出 a、b 和 c 的兩種有效方式。
# using a list of bindings
provide a, b, c end
# using an object literal
provide {
a: a,
b: b,
c: c
}
end
第 3 種方法provide *是匯出所有頂層綁定的簡寫,但不包含自訂資料型態。不過一般不建議這樣做,因為 Pyret 嚴格禁止遮蔽。
有些練習會要求匯出自訂資料型態以供測試使用。
在這種情況下,你可以使用 provide-types 敘述。
由於資料型態可能還有一些不會被匯出的額外函式,因此建議使用provide-types *,即使有遮蔽的顧慮也是一樣。
provide-types *
data MyPoint:
| two-dim(x, y)
| three-dim(x, y, z)
end
所有練習的起始檔案都會設定好provide或provide-types敘述供你使用。