Макет useSelector с разными значениями - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь что-то вроде этого:

const useSelector = jest.fn();
jest.mock('react-redux', () => ({
  useSelector,
}));

Затем пытаюсь сделать что-то вроде этого:

useSelector.mockReturnValueOnce({});
shallow(
  <ComponentUsingUseSelector />
);

Это выдаст мне ошибку:

Фабрике модулей jest.mock() не разрешено ссылаться на какие-либо переменные вне области видимости.

Так что, если я не могу использовать переменную вне области видимости для макета, то как бы Я возвращаю разные значения для каждого теста?

1 Ответ

1 голос
/ 18 апреля 2020

Следующее, кажется, работает, после прочтения множества статей и документации, которая не делает то, что мне (я думаю) нужно делать; наконец нашел тот, который делает.

import { useSelector } from 'react-redux';

jest.mock('react-redux', () => ({
  useSelector: jest.fn(),
}));


describe('some test', () => {
  it('do something', () => {
    useSelector.mockImplementation(() => ('hello world'));
    shallow(
      <ComponentUsingUseSelector />
    );

Если он вызывается несколько раз, я могу сделать:

describe('some test', () => {
  it('do something', () => {
    useSelector.
      .mockReturnValueOnce('first call')
      .mockReturnValueOnce('second call')
    shallow(
      <ComponentUsingUseSelector />
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...