expect(jest.fn()).toHaveBeenCalledWith(...expected) 开玩笑酶

时间:2021-07-02 16:08:52

标签: javascript reactjs jestjs enzyme

我进行了以下测试以查看状态是否已设置。

    const setState = jest.fn();
    const useStateSpy = jest.spyOn(React, 'useState');

    useStateSpy.mockImplementation((init) => [init, setState]);

    it('should update state upon changing department in select field', () => {
        const select = wrapper.find('select');
        select.instance().value = 'Customer Success';
        select.simulate('change');
        expect(setState).toHaveBeenCalledWith('Customer Success');
    });

我使用以下代码设置状态。

import React, { useState, useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { postJobAction } from './redux/postJobActions';

const PostJobComponent = () => {
  const [department, setDepartment] = useState('');


const onPostJobSubmit = (event) => {
    event.preventDefault();

    dispatch(postJobAction({
      department,
    }));
  };

  const onDepartmentChange = (event) => {
    setDepartment(event.target.value);
  };

  return (
    <div className='post-job'>
      <form onSubmit={onPostJobSubmit}>
        <div>
          <label>Department</label>
          <select className='job__department' required onChange={onDepartmentChange}>
            <option value=''>Select</option>
            <option value='Customer Success'>Customer Success</option>
            <option value='Professional Services'>Professional Services</option>
            <option value='Service Support'>Service And Support</option>
            <option value='Engineering'>Engineering</option>
          </select>
        </div>
        <div>
          <button>Save</button>
        </div>
      </form>
    </div>
  );
};

export default PostJobComponent;

如您所见,我正在 onDepartmentChange 上调用 select 函数。但是,它在代码中工作得很好,当我运行测试时,它显示了这个错误。

expect(jest.fn()).toHaveBeenCalledWith(...expected)

    Expected: "Customer Success"

    Number of calls: 0

      69 |      select.instance().value = 'Customer Success';
      70 |      select.simulate('change');
    > 71 |      expect(setState).toHaveBeenCalledWith('Customer Success');
         |                       ^
      72 |  });

知道我做错了什么以及如何解决这个问题吗?

0 个答案:

没有答案