Prerequisite
ReScript v10.1+ is required since v1.0.0. To use Js.Promise2 and async/await for tests.
ReScript v11.x with the uncurried mode is supported since v2.x.
Config
Configure with plain vite.config.js or vitest.config.js.
You can use vite-plugin-rescript to build ReScript automatically before the test.
Note
You may need to exclude lib/bs directory manually, otherwise some build artifacts can be picked by Vitest and fail.
See #36 for details.
Example config:
// vitest.config.js import { configDefaults, defineConfig } from 'vitest/config'; import rescript from 'vite-plugin-rescript'; export default defineConfig({ test: { exclude: [ ...configDefaults.exclude, 'lib/bs/**', ], }, plugins: [ rescript(), ], });
Usage
You can find examples on tests
Basic
open Vitest describe("Hello, Vitest", () => { test("This is a test case", t => { // t is `expect` object for suite-wide assertions t->assertions(3) // Test using the `Expect` module t->expect(1 + 2)->Expect.toBe(3) // There are some nested modules for specific type t->expect([1, 2, 3]) ->Expect.Array.toContain(2) t->expect("Hello, ReScript-Vitest!") ->Expect.String.toContain("ReScript") // You can specify timeout for a test suite }, ~timeout=2000) })
In-source testing (experimental)
Vitest support in-source testing
// This if block can be removed from production code. // You need to define `import.meta.vitest` to `undefined` if Vitest.inSource { open Vitest.InSource test("In-source testing", t => { t->expect(1 + 2)->Expect.toBe(3) }) }
LICENCE
MIT