# 1 Использование Jest
Вот как я использую фиктивную функцию обратного вызова Jest для проверки события щелчка:
import React from 'react';
import { shallow } from 'enzyme';
import Button from './Button';
describe('Test Button component', () => {
it('Test click event', () => {
const mockCallBack = jest.fn();
const button = shallow((<Button onClick={mockCallBack}>Ok!</Button>));
button.find('button').simulate('click');
expect(mockCallBack.mock.calls.length).toEqual(1);
});
});
Я также использую модуль под названием фермент . Enzyme - это утилита для тестирования, которая упрощает утверждение и выбор компонентов React.
# 2 Использование Sinon
Кроме того, вы можете использовать другой модуль Sinon, который представляет собой автономный тестовый шпион, заглушки и имитаторы для JavaScript. Вот как это выглядит:
import React from 'react';
import { shallow } from 'enzyme';
import sinon from 'sinon';
import Button from './Button';
describe('Test Button component', () => {
it('simulates click events', () => {
const mockCallBack = sinon.spy();
const button = shallow((<Button onClick={mockCallBack}>Ok!</Button>));
button.find('button').simulate('click');
expect(mockCallBack).toHaveProperty('callCount', 1);
});
});
# 3 Использование собственного шпиона
Наконец, вы можете сделать своего собственного наивного шпиона (я не рекомендую этот подход, если у вас нет для этого веской причины).
function MySpy() {
this.calls = 0;
}
MySpy.prototype.fn = function () {
return () => this.calls++;
}
it('Test Button component', () => {
const mySpy = new MySpy();
const mockCallBack = mySpy.fn();
const button = shallow((<Button onClick={mockCallBack}>Ok!</Button>));
button.find('button').simulate('click');
expect(mySpy.calls).toEqual(1);
});