Я пытаюсь попробовать TDD, и я подумал, что начну с простого компонента входа в систему.Я пытаюсь проверить функцию на кнопке отправки.
Я могу проверить, что кнопка визуализируется и что при нажатии это состояние обновляется, поэтому функция вызывается в компоненте.Тест может видеть, что состояние обновлено, но не то, что функция вызывается.
Я свел свой код к самой базовой функциональности, которую я могу, я не должен видеть что-то!Я удалил все остальные тесты для компонента Login, чтобы попытаться сузить проблему.Я попробовал мелкий () вместо mount (), но не радости.Я хочу написать более сложный тест, но не могу даже распознать, что был вызван fn.
Мой тест:
import React from 'react';
import { mount } from 'enzyme';
import Login from './Login';
describe('when clicking the `submit` button', () => {
const mockSubmit = jest.fn();
const props = {
handleBtnClick: mockSubmit
};
const wrapper = mount(<Login {...props} />);
beforeEach(() => {
wrapper.find('button.btn-submit').simulate('click');
});
it('renders the `submit` button', () => {
expect(wrapper.find('button.btn-submit')).toExist();
});
it('when the submit button is clicked it updates `state`', () => {
expect(wrapper.state().buttonClicked).toEqual(true);
});
it('calls the submit callback', () => {
expect(mockSubmit).toHaveBeenCalled();
});
});
Мой компонент:
import React, { Component } from 'react';
class Login extends Component {
constructor() {
super();
this.state = {
buttonClicked: false
}
}
handleBtnClick = (e) => {
e.preventDefault();
this.setState({
buttonClicked: true
})
}
render() {
console.log(this.state.buttonClicked);
return(
<div>
<h1>Login</h1>
<form>
<div className="form-row">
<button
type="submit"
className="btn-submit"
onClick={this.handleBtnClick}
>
Submit
</button>
</div>
</form>
</div>
);
}
}
export default Login;