reactjs - Проверка флажка приводит к вызову функции - PullRequest
0 голосов
/ 09 марта 2020

Я пытаюсь написать модульный тест, когда флажок установлен, что приведет к вызову функции. Компонент 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

Я думал, что симулятор вызовет фиктивную функцию, но, кажется, на самом деле ничего не вызывает ее?

...