An open API service indexing awesome lists of open source software.

https://github.com/nighttrax/jest-react-mock


https://github.com/nighttrax/jest-react-mock

Last synced: 4 months ago
JSON representation

Awesome Lists containing this project

README

          



jest matcher for react-mock-component

![Build Status](https://github.com/NiGhTTraX/jest-react-mock/workflows/Tests/badge.svg) [![codecov](https://codecov.io/gh/NiGhTTraX/jest-react-mock/branch/master/graph/badge.svg)](https://codecov.io/gh/NiGhTTraX/jest-react-mock) ![npm type definitions](https://img.shields.io/npm/types/mugshot.svg)

----

## Installation

With npm

```sh
npm i -D jest-react-mock
```

or with yarn

```sh
yarn add -D jest-react-mock
```

## Setup

In your test setup:

```typescript
import 'jest-react-mock';
```

## Usage

### `toBeMounted`

Checks that a mock component is currently mounted.

```typescript jsx
import createReactMock from 'react-mock-component';
import React from 'react';
import {render, unmount} from 'react-dom';

const Mock = createReactMock();

expect(Mock).not.toBeMounted();
render();
expect(Mock).toBeMounted();
unmount();
expect(Mock).not.toBeMounted();
```

### `toHaveBeenRendered()`

Checks that a mock component has been rendered at least once.

```typescript jsx
import createReactMock from 'react-mock-component';
import React from 'react';
import {render} from 'react-dom';

const Mock = createReactMock();

expect(Mock).not.toHaveBeenRendered();

render();

expect(Mock).toHaveBeenRendered();
```

This is slightly different from `toBeMounted`: if the component gets unmounted `toBeMounted` will throw whereas `toHaveBeenRendered` will continue to pass.

### `toHaveBeenRenderedWith(props)`

Checks that a mock component has been rendered with the expected props at least once. If you want to check only the last render then use [`toHaveProps`](#tohavepropsprops).
You can pass a subset of the props and they will be deeply matched against the received ones.

```typescript jsx
import createReactMock from 'react-mock-component';
import React from 'react';
import {render} from 'react-dom';

const Mock = createReactMock<{ foo: string, bar: number }>();

render();

expect(Mock).toHaveBeenRenderedWith({ foo: 'bar' });
```

### `toHaveProps(props)`

Checks that a mock component's last received props match the expected ones. If you want the check all renders and not just the last one then use [`toHaveBeenRenderedWith`](#tohavebeenrenderedwithprops).
You can pass a subset of the props and they will be deeply matched against the received ones.

```typescript jsx
import createReactMock from 'react-mock-component';
import React from 'react';
import {render} from 'react-dom';

const Mock = createReactMock<{ foo: string, bar: number }>();

render();

expect(Mock).toHaveProps({ foo: 'bar' });
```