Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/avrelian/jasmine-custom-message
custom failure message on any jasmine v1.3 assertion
https://github.com/avrelian/jasmine-custom-message
assertions custom-message jasmine jasmine-assertion
Last synced: about 1 month ago
JSON representation
custom failure message on any jasmine v1.3 assertion
- Host: GitHub
- URL: https://github.com/avrelian/jasmine-custom-message
- Owner: avrelian
- License: mit
- Created: 2014-01-07T22:14:02.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2023-04-15T16:56:16.000Z (over 1 year ago)
- Last Synced: 2024-11-13T19:02:22.557Z (about 1 month ago)
- Topics: assertions, custom-message, jasmine, jasmine-assertion
- Language: JavaScript
- Homepage:
- Size: 223 KB
- Stars: 14
- Watchers: 3
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
jasmine-custom-message
======================
> **works with `jasmine v1.3`** (for work with `jasmine v2` see [`jasmine2-custom-message`](https://github.com/avrelian/jasmine2-custom-message))This script makes it possible to use your own failure message on any jasmine assertion.
#### Example
```js
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 `since` function. That returns an object with a property `expect`. That contains no more than a wrapped jasmine `expect` function. That returns jasmine `expectation` object with a specially defined `message` function. That can produce a custom failure message. That is generating based on a custom message you have supplied to `since` function as the first argument. That can be a primitive (except `null` and `undefined`), a function, or any other object. That is it.
#### Example
```js
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-message` does not replace global jasmine `expect` function.
#### Example
```js
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.actual` and `this.expected`
* Passing a string, and using `#{actual}` and `#{expected}`#### Example using a function
```js
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
```js
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 `then` method, so be careful if your non-promise object has this method.
#### Example (with a little help of protractor)
```js
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.js` into your HTML file next to `jasmine` script
```html
```## 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
```js
require('jasmine-custom-message');
```## Change log
`v0.8.0` - 2015.08.05 - **Be careful of objects with `then` method, since they are treated as promises**
* fixed issue with custom failure messages on promised assertions
* implemented "format string" functionality: #{actual} and #{expected}
* configured `protractor` environment
* 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 `since` function
* 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 `it` and `expect` functions 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 `it` function`v0.1.0` - 2014.01.08
* the first functional version## Release plan
`v0.9.0` - some new features (based on requests from Issues)