Я пытаюсь написать модульный тест, когда флажок установлен, что приведет к вызову функции. Компонент React:
const changeExamBoards = (e, filterOptions) => {
if(e.target.checked && !(filterOptions.examBoards.includes(e.target.value))) {
setfilterOptions({ ...filterOptions, examBoards: [...filterOptions.examBoards, e.target.value] });
}
else {
setfilterOptions({ ...filterOptions, examBoards: [...filterOptions.examBoards.filter(item => item !== e.target.value)] });
}
};
<div className='option-container' onChange={e => changeExamBoards(e, filterOptions)}>
<div className='question-option-container'><input className='question-option' type="checkbox" name="AQA" value="AQA" /> AQA</div>
<div className='question-option-container'><input className='question-option' type="checkbox" name="Edexcel" value="Edexcel" /> Edexcel</div>
<div className='question-option-container'><input className='question-option' type="checkbox" name="OCR" value="OCR" /> OCR</div>
<div className='question-option-container'><input className='question-option' type="checkbox" name="WJEC" value="WJEC" /> WJEC</div>
</div>
Модульный тест, который я пытался запустить:
describe('QuestionFilter component', () => {
let store;
let wrapper;
let mockChangeExamBoards;
let mockRefreshPage;
let mockChangeDifficulty;
beforeEach(() => {
store = mockStore({
question: []
});
mockChangeExamBoards = jest.fn();
mockRefreshPage = jest.fn();
store.dispatch = jest.fn();
mockChangeDifficulty = jest.fn();
const mockProps = {
store,
refreshPage: mockRefreshPage,
changeExamBoards: mockChangeExamBoards,
changeDifficulty: mockChangeDifficulty
}
wrapper = mount(<QuestionFilter {...mockProps} />
)
});
it('expect changeExamBoards to be called', () => {
const eMock = { preventDefault: jest.fn(), target: 'fake target', checked: true };
expect(mockChangeExamBoards).not.toHaveBeenCalled();
wrapper.find('.question-option-container')
.at(0)
.simulate('change', eMock);
expect(mockChangeExamBoards).toHaveBeenCalled();
});
Однако, как бы я ни пытался, я получаю эту ошибку:
QuestionFilter component › expect change difficulty to be called
expect(jest.fn()).toHaveBeenCalled()
Expected number of calls: >= 1
Received number of calls: 0
Я думал, что симулятор вызовет фиктивную функцию, но, кажется, на самом деле ничего не вызывает ее?