Как шпионская фиктивная функция в объекте реквизита при тестах с шуткой? - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть объект макета проп в двух функциях макета. Мне нужно шпионить за ними обоими, и я не знаю, как шпионить.

Это пример:

myComponent. js

function Package(props) {
  const { lockUI } = props
  lockUI.set();
  // ...
}

myComponent. тест. js

import React from 'react';
import Package from 'src/Package';
import { cleanup, render } from '@testing-library/react';

describe('Package Unit Test', () => {
    let props;

    beforeEach(() => {
        props = {
            lockUI                                 : {
                set   : jest.fn(),
                unset : jest.fn(),
            },
        };
    });

    afterEach(cleanup);

    test('testing example', () => {
        render(<Package {...props} />);
        expect(props.lockUI.set).toHaveBeenCalledTimes(1);
    });
});

Ответная консоль:

 Expected number of calls: 1
 Received number of calls: 0

1 Ответ

0 голосов
/ 21 февраля 2020

вам просто нужно сначала объявить setSpy и unsetSpy и подключить их к компоненту

import React from 'react';
import Package from 'src/Package';
import { cleanup, render } from '@testing-library/react';

describe('Package Unit Test', () => {
    const setSpy = jest.fn();
    const unsetSpy = jest.fn();
    let props;

    beforeEach(() => {
        props = {
            lockUI                                 : {
                set   : setSpy,
                unset : unsetSpy,
            },
        };
    });

    afterEach(cleanup);

    test('testing example', () => {
        render(<Package {...props} />);
        expect(setSpy).toHaveBeenCalledTimes(1);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...