0.2.1 • Published 7 years ago
jest-multiline-matchers v0.2.1
jest-multiline-matchers
Use multiline template strings as values for your expectations without worrying about indentation.
Install
yarn add --dev jest-multiline-matchersor
npm install --dev jest-multiline-matchersUsage
See explaination of the problems with multiline template strings and how they are handled in the README for dedent-preserving-indents which is the library used under the hood of these matchers.
toEqualMultiline
A version of toEqual that supports multiline template strings.
it(`returns a multiline string`, () => {
const expected = `
Here is a multiline string
- It can be indented
However you like.
And it doesn't just check the first line`
expect(f()).toEqualMultiline(expected)
})The expected string will have its whitespace trimmed to the line with the least whitespace, so the above would become:
Here is a multiline string
- It can be indented
However you like.
And it doesn't just check the first linetoThrowMultiline
A version of toThrow that supports multiline template strings. Note that unlike toThrow it assumes you will supply an expected value you want to compare to the Error's message.
it(`returns a multiline string`, () => {
const expected = `
Here is a an error message
- It is formatted
However you like`
expect(() => f()).toThrowMultiline(expected)
})Using the matchers with Jest
Add the following line to your jest.config.js:
{
...
setupTestFrameworkScriptFile: `<rootDir>/src/__tests__/testHelpers/customMatchers.js`,
}Then in customMatchers.js:
import toEqualSuccessWithValue from '../../matchers/validation/toEqualSuccessWithValue'
import toEqualFailureWithValue from '../../matchers/validation/toEqualFailureWithValue'
expect.extend({
toEqualSuccessWithValue,
toEqualFailureWithValue,
})