4
コンポーネントでボタンがクリックされたときに、クリックを処理するために作成したメソッドを呼び出すことを確認します。ここに私のコンポーネントである:EnzymeとSinonを使用してReactコンポーネントのテストカスタムメソッドが呼び出されました
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();
});
});
あるプロパティと呼ばれるコールバック偽きます。私は文法のバリエーションを試してみましたが、おそらく私は何か基本的なものを見逃していると思います。どんな助けでも大歓迎です。
2番目のコードスニペットは確かに私のテストに合格しません。内部メソッドのテストに関する興味深い記事、私はそれを知らなかった。私は一般的にTDDにはかなり新しいので、もし私がテストすべきものが間違っていれば、おそらく私の理解です。多くのおかげで、私は私の研究に忍耐強くなるでしょう! –
「ユニット」の境界線はどういう意見がありますか、あなたのアプローチは必ずしも間違っているとは思われません。しかし、それは一般的に開催されている意見ですので、私はそれを渡す必要があると思った。あなたのテストの旅をお楽しみください:) – bjudson
多くのおかげで、それは私をたくさん助け、私は酵素レポに多くの問題をチェックしましたが、コンポーネントの内部メソッドでは動作しません。 –