2017-07-13 1 views
1

Je veux tester le bouton cliquer sur le composant de réaction qui est de type tapuscrit. Ceci est du code composant:Réagir sinon/enzyme simuler cliquer sur la fonction de classe es6

export default class Send extends Component ... { 

constructor(super) {...} 

selectAll() {...} 

render() { 
    <button id="selectAll" onClick={this.selectAll.bind(this)}>Add<button/> 
} 
} 

Mon test est:

it('should select all if selectAll button is clicked',() => { 
    const wrapper = shallow(<Send {...props} />); 
    const selectAll = sinon.spy(wrapper.instance(), 'selectAll'); 

    const selectAllButton = wrapper.find('#selectAll'); 

    selectAllButton.simulate('click'); 

    expect(selectAll.calledOnce).to.equal(true); 

    }); 

Et voici ce que je reçois:

 AssertionError: expected false to equal true 

Toutes les idées? Merci

+0

Pouvez-vous ajouter le code pour selectAll? –

+0

@Ori selectAll définit simplement l'état avec setState(), pas de valeur de retour. – Case09

+0

Déplacer 'this.selectAll.bind (this)' au constructeur -> 'this.selectAll = this.selectAll.bind (this)', changer onclick en 'onClick = {this.selectAll}', et utiliser 'sinon. spy (Send.prototype, 'selectAll'); '. –

Répondre

2

Ok, j'ai trouvé quel était le problème. Je devais ajouter

wrapper.instance().forceUpdate(); 

juste après avoir déclaré sinon.spy (...), et maintenant cela fonctionne bien.