jasmine-custom-message

custom failure message on any jasmine assertion

jasmine-custom-message

works with jasmine v1.3(for work with jasmine v2see jasmine2-custom-message)

This script makes it possible to use your own failure message on any jasmine assertion.

Example

describe('the story', function() {
  it('should finish ok', function() {
    since('all cats are grey in the dark').
    expect('tiger').toEqual('kitty'); // => 'all cats are grey in the dark'
  });
});

Simple

All the magic happens in sincefunction. That returns an object with a property expect. That contains no more than a wrapped jasmine expectfunction. That returns jasmine expectationobject with a specially defined messagefunction. That can produce a custom failure message. That is generating based on a custom message you have supplied to sincefunction as the first argument. That can be a primitive (except nulland undefined), a function, or any other object. That is it.

Example

describe('test', function() {
  it('should be ok', function() {
    since(function() {
      return {'tiger': 'kitty'};
    }).
    expect(3).toEqual(4); // => '{"tiger":"kitty"}'
  });
});

Unobtrusive

You can use jasmine as you did before, since jasmine-custom-messagedoes not replace global jasmine expectfunction.

Example

describe('test', function() {
  it('should be ok', function() {
    expect(3).toEqual(4); // => ordinary jasmine message
  });
});

Powerful

You can use expected and actual value of the assertion in your custom message, by:

  • Passing a function, and using this.actualand this.expected
  • Passing a string, and using #{actual}and #{expected}

Example using a function

describe('test', function() {
  it('should be ok', function() {
    since(function(expected) {
      return this.actual + ' =/= ' + expected;
    }).
    expect(3).toEqual(4); // => '3 =/= 4'
  });
});

Example using a string

describe('test', function() {
  it('should be ok', function() {
    since('#{actual} =/= #{expected}').
    expect(3).toEqual(4); // => '3 =/= 4'
  });
});

Moreover, you can use a promise as an argument of expect or matcher functions. Promise is recognized by thenmethod, so be careful if your non-promise object has this method.

Example (with a little help of protractor)

describe('test', function() {
  it('should be ok', function() {
    since(function(expected) {
      return this.actual + ' =/= ' + expected;
    }).
    expect(protractor.promise.fulfilled(3)).toEqual(protractor.promise.fulfilled(4)); // => '3 =/= 4'
  });
});

Front-end usage

  • install the bower package from github
    bower install jasmine-custom-message --save-dev
  • include jasmine-custom-message.jsinto your HTML file next to jasminescript
    <script src="PATH-TO/jasmine.js"></script>
    <script src="PATH-TO/jasmine-custom-message.js"></script>   

Node.js usage

  • install the bower package

    bower install jasmine-custom-message --save-dev

    or npm package

    npm install jasmine-custom-message --save-dev
  • require it in your spec file before your tests

    require('jasmine-custom-message');

Change log

v0.8.0- 2015.08.05 - Be careful of objects with thenmethod, since they are treated as promises

  • fixed issue with custom failure messages on promised assertions
  • implemented "format string" functionality: #{actual} and #{expected}
  • configured protractorenvironment
  • corrected displaying of colors in tests running through protractor
  • updated specs

v0.7.0- 2014.10.23

  • fixed issue with custom failure messages on inverse assertions
  • updated specs

v0.6.0- 2014.01.18 - BROKEN COMPATIBILITY!

  • all the magic moved into newly introduced sincefunction
  • restored automatic initiation of the script upon inclusion (browser) or require (Node.js)
  • cleaned specs

v0.5.0- 2014.01.15

  • added support for nested message functions
  • dropped automatic wrapping of jasmine itand expectfunctions in browsers
  • added specs for Node.js
  • added specs for browsers
  • registered bower package
  • made disambiguation and readability improvements

v0.2.0- 2014.01.10 - BROKEN COMPATIBILITY!

  • custom messages is supplied as the third argument for jasmine itfunction

v0.1.0- 2014.01.08

  • the first functional version

Release plan

v0.9.0- some new features (based on requests from Issues)

HomePage

https://github.com/avrelian/jasmine-custom-message

Repository

https@github.com:avrelian/jasmine-custom-message


上一篇:hooks
下一篇:selfexjs

相关推荐

官方社区

扫码加入 JavaScript 社区