jest-expect-message
Version:
Add custom message to Jest expects
232 lines (167 loc) ⢠5.98 kB
Markdown
<div align="center">
<h1>jest-expect-message</h1>
ššÆ
Add custom message to Jest expects
</div>
<hr />
[](https://github.com/mattphillips/jest-expect-message/actions/workflows/ci.yaml)
[](https://codecov.io/github/mattphillips/jest-expect-message)
[](https://www.npmjs.com/package/jest-expect-message)
[](http://npm-stat.com/charts.html?package=jest-expect-message&from=2017-09-14)
[](https://github.com/mattphillips/jest-expect-message/blob/master/LICENSE)
[](http://makeapullrequest.com)
[](https://github.com/mattphillips/jest-expect-message/blob/master/docs/ROADMAP.md)
[](https://github.com/mattphillips/jest-expect-message/blob/master/docs/EXAMPLES.md)
In many testing libraries it is possible to supply a custom message for a given expectation, this is currently not
possible in Jest.
For example:
```js
test('returns 2 when adding 1 and 1', () => {
expect(1 + 1, 'Woah this should be 2!').toBe(3);
});
```
This will throw the following error in Jest:
```sh
Expect takes at most one argument.
```
`jest-expect-message` allows you to call `expect` with a second argument of a `String` message.
For example the same test as above:
```js
test('returns 2 when adding 1 and 1', () => {
expect(1 + 1, 'Woah this should be 2!').toBe(3);
});
```
With `jest-expect-message` this will fail with your custom error message:
```sh
ā returns 2 when adding 1 and 1
Custom message:
Woah this should be 2!
expect(received).toBe(expected) // Object.is equality
Expected: 3
Received: 2
```
With npm:
```sh
npm install --save-dev jest-expect-message
```
With yarn:
```sh
yarn add -D jest-expect-message
```
Add `jest-expect-message` to your Jest `setupFilesAfterEnv` configuration.
[](https://jestjs.io/docs/en/next/configuration#setupfilesafterenv-array)
```json
"jest": {
"setupFilesAfterEnv": ["jest-expect-message"]
}
```
```json
"jest": {
"setupTestFrameworkScriptFile": "jest-expect-message"
}
```
If you have a custom setup file and want to use this library then add the following to your setup file.
```js
import 'jest-expect-message';
```
Add the following entry to your tsconfig to enable Typescript support.
```json
"files": ["node_modules/jest-expect-message/types/index.d.ts"],
```
Custom message [example](/example) with typescript
```json
"rules": {
"jest/valid-expect": [
"error",
{
"maxArgs": 2
}
]
}
```
- `expect(actual, message, options?)`
- `actual`: The value you would normally pass into an `expect` to assert against with a given matcher.
- `message`: String, the custom message you want to be printed should the `expect` fail.
- `options`: An optional object that controls what is shown as part of the custom message.
- `showPrefix: boolean`: If `false` will not show the `Custom message:` prefix. Default: `true`
- `showMatcherMessage: boolean`: If `false` will not show the matchers original error message. Default: `true`
- `showStack: boolean`: If `false` will not show the matchers stack trace. Default: `true`
```js
test('returns 2 when adding 1 and 1', () => {
expect(1 + 1, 'Woah this should be 2!').toBe(3);
});
// ā ā ā ā ā ā
/*
ā returns 2 when adding 1 and 1
Custom message:
Woah this should be 2!
expect(received).toBe(expected) // Object.is equality
Expected: 3
Received: 2
1 | test('returns 2 when adding 1 and 1', () => {
> 2 | expect(1 + 1, 'Woah this should be 2!').toBe(3);
| ^
3 | });
*/
```
```js
test('returns 2 when adding 1 and 1', () => {
expect(1 + 1, 'Woah this should be 2!', { showPrefix: false }).toBe(3);
});
// ā ā ā ā ā ā
/*
ā returns 2 when adding 1 and 1
Woah this should be 2!
expect(received).toBe(expected) // Object.is equality
Expected: 3
Received: 2
1 | test('returns 2 when adding 1 and 1', () => {
> 2 | expect(1 + 1, 'Woah this should be 2!', { showPrefix: false }).toBe(3);
| ^
3 | });
*/
```
```js
test('returns 2 when adding 1 and 1', () => {
expect(1 + 1, 'Woah this should be 2!', { showMatcherMessage: false }).toBe(3);
});
// ā ā ā ā ā ā
/*
ā returns 2 when adding 1 and 1
Custom message:
Woah this should be 2!
1 | test('returns 2 when adding 1 and 1', () => {
> 2 | expect(1 + 1, 'Woah this should be 2!', { showMatcherMessage: false }).toBe(3);
| ^
3 | });
*/
```
```js
test('returns 2 when adding 1 and 1', () => {
expect(1 + 1, 'Woah this should be 2!', { showStack: false }).toBe(3);
});
// ā ā ā ā ā ā
/*
ā returns 2 when adding 1 and 1
Custom message:
Woah this should be 2!
expect(received).toBe(expected) // Object.is equality
Expected: 3
Received: 2
*/
```
[](/LICENSE)