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.
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(),
],
});You can find examples on tests
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)
})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)
})
}MIT