Je veux vérifier que lorsqu'un bouton est cliqué sur mon composant, il appelle la méthode que j'ai créée pour gérer le clic. Voici mon élément:La méthode personnalisée de test sur le composant React a été appelée, en utilisant Enzyme et 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;
et voici mon test
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();
});
});
L'appel a appelé la propriété revient faux. J'ai essayé des tas de variations sur la syntaxe et je pense que je manque peut-être quelque chose de fondamental. Toute aide serait grandement appréciée.
Le deuxième extrait de code ne passe en effet mon test. Article intéressant sur les méthodes internes de test, je ne savais pas cela. Je suis relativement nouveau à TDD en général, alors peut-être que je comprends si ce que je devrais tester est incorrect. Merci beaucoup, je vais persévérer dans mes recherches! –
Il y a des opinions différentes sur ce que devrait être la limite d'une «unité», je ne pense pas que votre approche soit nécessairement incorrecte. Mais je pense que je devrais passer cela, car c'est une opinion communément tenue. Profitez de votre voyage de test :) – bjudson
Merci beaucoup, cela m'aide beaucoup, j'ai vérifié beaucoup de problème sur l'enzyme repo, mais cela ne fonctionne pas avec la méthode interne d'un composant. –