开玩笑的间谍没有检测到onChange事件的方法调用

时间:2020-08-31 19:39:23

标签: javascript reactjs jestjs enzyme

我正在用笑话/酶测试React组件。我编写了test来测试输入标签上的onChange事件调用。我想窥探方法并检查它是否被解雇了 这是我的组件代码:

 export default class Login extends Component {
  constructor(props) {
    super(props);
    autoBind(this);
  }

  handleChangeFields() {
    const email = this.email.value;
    const password = this.password.value;

    const validationResults = {
      email: isValidEmail(email),
      password: password.length >= 8,
    };

    const isValidFields = Object.values(validationResults).every(Boolean);


  }


  render() {
    
    return (
      <form onSubmit={this.validateLoginForm}>
        <input
          type="email"
          name="email"
          ref={(input) => this.email = input}
          placeholder="Email *"
          onChange={this.handleChangeFields}
        />
        <input
          type="password"
          name="password"
          ref={(input) => this.password = input}
          placeholder="Password *"
          onChange={this.handleChangeFields}
        />
       
        <input
         
          type="submit"
          value="login"
        />
      </form>
    );
  }
}

测试代码:

import React from 'react';
import { shallow, mount } from 'enzyme';

import Login from './Login';

describe('<Login /> Component', () => {
  let wrapper;

  const props = {

  };

  beforeEach(() => {
    wrapper = mount(<Login {...props} />);
  });

  describe('<Login /> rendering', () => {
    test('should call fields change method', () => {
      const instance = wrapper.instance();
      const spyChange = jest.spyOn(instance, 'handleChangeFields');

      const input = wrapper.find('input').at(0);

      input.simulate('change', { target: { value: 'test@test.com' } });
      
      expect(spyChange).toHaveBeenCalled();
      expect(wrapper.state().activeBtn).toBeFalsy();
    });
  });
});

但是测试没有通过,我有一个错误:

Expected number of calls: >= 1
Received number of calls:    0

我不知道为什么jest.spyOn无法检测到mwthod调用。我在做什么错了?

0 个答案:

没有答案
相关问题