Я хочу проверить, что при нажатии кнопки на моем компоненте он вызывает метод, который я создал для обработки щелчка. Вот мой компонент:Вызывается тестовый метод на компоненте React, используя Enzyme и Sinon
import React, { PropTypes, Component } from 'react';
class Search extends Component {
constructor(){
super();
this.state = { inputValue: '' };
}
handleChange = (e) => {
this.setState({ inputValue: e.target.value });
}
handleSubmit = (e) => {
e.preventDefault();
return this.state.inputValue;
}
getValue =() => {
return this.state.inputValue;
}
render(){
return (
<form>
<label htmlFor="search">Search stuff:</label>
<input id="search" type="text" value={this.state.inputValue} onChange={this.handleChange} placeholder="Stuff" />
<button onClick={this.handleSubmit}>Search</button>
</form>
);
}
}
export default Search;
и вот мой тест
import React from 'react';
import { mount, shallow } from 'enzyme';
import Search from './index';
import sinon from 'sinon';
describe('Search button',() => {
it('calls handleSubmit',() => {
const shallowWrapper = shallow(<Search />);
const stub = sinon.stub(shallowWrapper.instance(), 'handleSubmit');
shallowWrapper.find('button').simulate('click', { preventDefault() {} });
stub.called.should.be.true();
});
});
Вызов называется свойство возвращается ложь. Я пробовал множество вариаций в синтаксисе, и я думаю, может быть, я просто пропустил что-то фундаментальное. Любая помощь будет принята с благодарностью.
Второй фрагмент кода действительно проходит мой тест. Интересная статья о тестировании внутренних методов, я этого не знал. Я довольно новичок в TDD в целом, поэтому, возможно, мое понимание, если то, что я должен тестировать, неверно. Большое спасибо, я буду продолжать с моими исследованиями! –
Существуют разные мнения о том, какой должна быть граница «единицы», я не думаю, что ваш подход обязательно неверен. Но подумал, что я должен передать это, поскольку это общепринятое мнение. Наслаждайтесь вашим испытательным путешествием :) – bjudson
Большое спасибо, это очень помогает мне, я проверил много вопросов о ферментном репо, но он не работает с внутренним методом компонента. –