Very very experimental (yep, that's one less "very" than before! Progress!) and WIP
require.*ExpectJS. Some functionality does not make sense in a typed language, or is not possible to implement sensibly in ML.MockJs module as it's very quirky to use with native code. A separate native from-scratch implementation might suddenly appear as Mock.JestJs. It's mostly implemented, but experimental and largely untested.(* OCaml *)
open Jest
let _ =
describe "Expect" (fun () ->
let open Expect in
test "toBe" (fun () ->
expect (1 + 2) |> toBe 3);
);
describe "Expect.Operators" (fun () ->
let open Expect in
let open! Expect.Operators in
test "==" (fun () ->
expect (1 + 2) == 3);
);
/* Reason */
open Jest;
let _ =
describe "Expect" (fun () => {
open Expect;
test "toBe" (fun () =>
expect (1 + 2) |> toBe 3)
});
describe "Expect.Operators" (fun () => {
open Expect;
open! Expect.Operators;
test "==" (fun () =>
expect (1 + 2) === 3)
});
See the tests for more examples.
npm install --save-dev bs-jest
Then add bs-jest to bs-dev-dependencies in your bsconfig.json:
{
...
"bs-dev-dependencies": ["bs-jest"]
}
Then add __tests__ to sources in your bsconfig.json:
"sources": [
{
"dir": "src"
},
{
"dir": "__tests__",
"type": "dev"
}
]
Put tests in a __tests__ directory and use the suffix *test.ml/*test.re (Make sure to use valid module names. e.g. <name>_test.re is valid while <name>.test.re is not). When compiled they will be put in a __tests__ directory under lib, with a *test.js suffix, ready to be picked up when you run jest. If you're not already familiar with Jest, see the Jest documentation.
git clone https://github.com/reasonml-community/bs-jest.git
cd bs-jest
npm install
Then build and run tests with npm test, start watchers for bsband jest with npm run watch:bsb and npm run watch:jest respectively. Install screen to be able to use npm run watch:screen to run both watchers in a single terminal window.
testAll, Only.testAll, Skip.testAll that generates tests from a list of inputsfailexpectFn