This package has been deprecated

Author message:

Moved to @glennsl/bs-jest

bs-jest

0.3.2 • Public • Published

bs-jest

BuckleScript bindings for Jest - Very very experimental (yep, that's one less "very" than before! Progress!) and WIP

npm Travis Coveralls Dependencies Issues Last Commit

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 MockJs module as it's very quirky to use with native code. A separate native from-scratch implementation might suddenly appear as Mock.
  • 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-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"
  }
]

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 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.

Changes

0.3.1

  • Moved repository from reasonml-community/bs-jest to glennsl/bs-jest
  • Renamed NPM package from bs-jest to @glennsl/bs-jest

0.3.0

  • Added toThrowException
  • Fixed an issue with custom Runner implementation shadowing the global test function from jest
  • Fixed a typo in the js boundary of not_ |> toBeLessThanEqual

0.2.0

  • Removed deprecations
  • Added testAll, Only.testAll, Skip.testAll that generates tests from a list of inputs
  • Fixed type signature of fail
  • Added expectFn

Package Sidebar

Install

npm i bs-jest

Weekly Downloads

15

Version

0.3.2

License

MIT

Last publish

Collaborators

  • glennsl