jasts
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

jasts - Jasmine TypeScript classes for better unit testing

Jasmine is a really good testing tool for JavaScript.   It's well known, well documented, widely used, and has personally helped me catch a lot of bugs before they've seen the light of day. Thank you to the Jasmine team for making a really good tool.

Jasmine has two areas where it can help developers better, and this project fills in those two gaps.

Gap 1: Error messages when a test fails.

it ("Test emptying the shopping cart", function () {
  const cart:ShoppingCart = new ShoppingCart();
  cart.put (product1);
  cart.put (product2);
  cart.clear ();
  expect (cart.numberOfItemsInCart ()).toEqual(0);
  expect (cart.calculatePrice ()).toEqual(0);
});

And then you get back the helpful error message: Expected undefined to equal 0.

This error message doesn't tell you which line brought back the wrong result.
Do I have a bug with the first call or the second call?

Gap 2: Expect syntax is unusual

The expect (something()).method(somethingElse()) syntax is criticized for being unusual (although it does open up a great deal of flexibility).

Solution: npm i jasts --save-dev

it ("Test emptying the shopping cart", function () {
  const cart:ShoppingCart = new ShoppingCart();
  cart.put (product1);
  cart.put (product2);
  cart.clear ();
  TestNumber.equals ("no items in cart", cart.numberOfItemsInCart (), 0);
  TestNumber.equals ("empty cart should cost nothing", cart.calculatePrice (), 0);
});

Returns the far better error message: Failed: empty cart should cost nothing - value was undefined expected 0

Because you can provide text with each failure message, knowing exactly which statement failed with the chance for the developer to provide intelligent comments makes for quicker and easier debugging.

What classes does Jasts provide?

TestBoolean    
  true TestBoolean.true ("Test failure message if this boolean isnt true", dataToTest);
  false TestBoolean.false ("Test failure message if this boolean isnt false", dataToTest);
  equals TestBoolean.equals ("Test failure message if these booleans arent equal", dataToTest, dataToTestAgainst);
  null TestBoolean.null ("Test failure message if this boolean isnt null", dataToTest);
  undefined TestBoolean.undefined ("Test failure message if this boolean isnt undefined", dataToTest);
  notNull TestBoolean.notNull ("Test failure message if this boolean is null", dataToTest);
  notUndefined TestBoolean.notUndefined ("Test failure message if this boolean is undefined", dataToTest);
  notNullOrUndefined TestBoolean.notNullOrUndefined ("Test failure message if this boolean is null or undefined", dataToTest);
TestNumber    
  equals TestNumber.equals ("Test failure message if these numbers arent equal", dataToTest, numberItHasToEqual);
  greaterThan TestNumber.greaterThan ("Test failure message if dataToTest is not greater than numberItHasToBeGreaterThan", dataToTest, numberItHasToBeGreaterThan);
  lessThan TestNumber.lessThan ("Test failure message if dataToTest is not greater than numberItHasToBeLessThan", dataToTest, numberItHasToBeLessThan);
  undefined TestNumber.undefined ("Test failure message if this number isnt undefined", dataToTest);
  null TestNumber.null ("Test failure message if this number isnt null", dataToTest);
  notEquals TestNumber.notEquals ("Test failure message if these numbers are equal", dataToTest, numberItHasToEqual);
  notNullOrUndefined TestNumber.notNullOrUndefined ("Test failure message if this number is null or undefined", dataToTest);
  notUndefined TestNumber.notUndefined ("Test failure message if this number is undefined", dataToTest);
  notNull TestNumber.notNull ("Test failure message if this number is null", dataToTest);
TestString    
  equals TestString.equals ("Test failure message if these strings arent equal", dataToTest, stringItHasToEqual);
  null TestString.null ("Test failure message if this string is not null", dataToTest);
  undefined TestString.undefined ("Test failure message if this string is not undefined", dataToTest);
  notNull TestString.notNull ("Test failure message if this string is null", dataToTest);
  notUndefined TestString.notUndefined ("Test failure message if this string is undefined", dataToTest);
  notNullOrUndefined TestString.notUndefined ("Test failure message if this string is null or undefined", dataToTest);
Test    
  equals Test.equals ("Test failure message if these objects arent equal", dataToTest, stringItHasToEqual);
  null Test.null ("Test failure message if this object is not null", dataToTest);
  undefined Test.undefined ("Test failure message if this object is not undefined", dataToTest);
  notNull Test.notNull ("Test failure message if this object is null", dataToTest);
  notUndefined Test.notUndefined ("Test failure message if this object is undefined", dataToTest);
  notNullOrUndefined Test.notNullOrUndefined ("Test failure message if this object is null or undefined", dataToTest);

Readme

Keywords

none

Package Sidebar

Install

npm i jasts

Weekly Downloads

11

Version

1.0.0

License

MIT

Last publish

Collaborators

  • larrydiamond