bs-jest v0.3.2
bs-jest
BuckleScript bindings for Jest - Very very experimental (yep, that's one less "very" than before! Progress!) and WIP
NOTE: NPM package has moved to @glennsl/bs-jest. Remember to update both package.json AND bsconfig.json.
Status
- Global: Fully implemented and tested, apart from
require.* - Expect: Mostly implemented. Functionality that makes sense only for JS interop have been moved to
ExpectJs. Some functionality does not make sense in a typed language, or is not possible to implement sensibly in ML. - Mock Functions: Experimental and unsafe implementation, very much in flux. The Jest bindings will most likely be relegated to the
MockJsmodule as it's very quirky to use with native code. A separate native from-scratch implementation might suddenly appear asMock. - The Jest Object: Fake timers are fully implemented and tested. Mock functionality has been moved to
JestJs. It's mostly implemented, but experimental and largely untested. - Snapshotting: Expect functions exist and work, but there's currently no way to implement custom snapshot serializers.
Example
(* 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;
describe("Expect", () => {
open Expect;
test("toBe", () =>
expect(1 + 2) |> toBe(3))
});
describe("Expect.Operators", () => {
open Expect;
open! Expect.Operators;
test("==", () =>
expect(1 + 2) === 3)
}
);See the tests for more examples.
Installation
npm install --save-dev bs-jestThen 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"
}
]Usage
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.
Documentation
For the moment, please refer to Jest.mli.
Contribute
git clone https://github.com/glennsl/bs-jest.git
cd bs-jest
npm installThen 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.
Changes
0.3.1
- Moved repository from
reasonml-community/bs-jesttoglennsl/bs-jest - Renamed NPM package from
bs-jestto@glennsl/bs-jest
0.3.0
- Added
toThrowException - Fixed an issue with custom Runner implementation shadowing the global
testfunction from jest - Fixed a typo in the js boundary of
not_ |> toBeLessThanEqual
0.2.0
- Removed deprecations
- Added
testAll,Only.testAll,Skip.testAllthat generates tests from a list of inputs - Fixed type signature of
fail - Added
expectFn