Как сказал @jonrsharpe, onChangeFunc
, определенный внутри Header
SF C, является личным. Мы не можем получить к нему доступ, чтобы не могли шпионить за ним. Вы должны проверить это, вызвав событие change
.
Например,
index.tsx
:
import React from 'react';
export const Tabs = ({ onChange, children }) => <select onChange={onChange}>{children}</select>;
const Tab = ({ label }) => <option value={label}>{label}</option>;
export function Header(): JSX.Element {
function onChangeFunc(event: Event, tab: number): void {
console.log('onchange');
}
return (
<div>
<Tabs onChange={onChangeFunc}>
<Tab label="A" />
<Tab label="B" />
</Tabs>
</div>
);
}
index.test.tsx
:
import { Header } from './';
import React from 'react';
import { mount } from 'enzyme';
describe('60927553', () => {
it('should pass', () => {
const logSpy = jest.spyOn(console, 'log');
const wrapper = mount(<Header></Header>);
const mEvent = {};
wrapper.find('select').simulate('change', mEvent);
expect(logSpy).toBeCalledWith('onchange');
});
});
Результаты модульного тестирования со 100% покрытием:
PASS stackoverflow/60927553/index.test.tsx (7.617s)
60927553
✓ should pass (57ms)
console.log node_modules/jest-environment-enzyme/node_modules/jest-mock/build/index.js:866
onchange
-----------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-----------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
index.tsx | 100 | 100 | 100 | 100 |
-----------|---------|----------|---------|---------|-------------------
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 8.86s, estimated 9s