0
フィールドと送信ボタンで構成されるReactコンポーネントを作成しています。Redux/Mochaのユニットテストイベント
私はというイベントを 'onMapPointAdded'としています。これはユーザーがテキストを入力して[送信]ボタンをクリックすると発生します。
どうすればテストできますか?前もって感謝します!私は次のように働いている
は、コンポーネントに反応:
import React, { Component, PropTypes } from 'react'
import { connect } from 'react-redux'
import { addMapPoint } from '../actions'
export class AddMapPoint extends Component {
constructor(props) {
super(props)
this._handleOnSubmit = this._handleOnSubmit.bind(this)
}
_handleOnSubmit(e) {
console.log(e)
e.preventDefault()
let value = this.input.value.trim()
if (value) {
this.props.onMapPointAdded(this.input.value, this.props.center.lat, this.props.center.lng)
}
}
render() {
return (
<div>
<form onSubmit={this._handleOnSubmit}>
<input ref={node => {this.input = node}}/>
<button type='Submit'>Add Map Point</button>
</form>
</div>
);
}
}
AddMapPoint.propTypes = {
center: PropTypes.shape({
lat: PropTypes.number.isRequired,
lng: PropTypes.number.isRequired
}).isRequired,
onMapPointAdded: PropTypes.func.isRequired
}
const mapStateToProps = (state) => {
return {
center: state.center
}
}
const mapDispatchToProps = (dispatch) => {
return {
onMapPointAdded: (value, lat, lng) => {
dispatch(addMapPoint(value, lat, lng))
}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(AddMapPoint)
は、これらが反応コンポーネントのユニットテストです:
import expect from 'expect'
import React from 'react'
import TestUtils from 'react-addons-test-utils'
import { AddMapPoint } from '../../src/components/AddMapPoint'
function setup() {
let props = {
onMapPointAdded: expect.createSpy(),
center: { lat: 59.938043, lng: 30.337157 }
}
let renderer = TestUtils.createRenderer()
renderer.render(<AddMapPoint {...props} />)
let output = renderer.getRenderOutput()
return {
props,
output,
renderer
}
}
describe('components',() => {
describe('AddMapPoint',() => {
it('should render correctly',() => {
const { output } = setup()
expect(output.type).toBe('div')
let form = output.props.children
expect(form.type).toBe('form')
let [input, button] = form.props.children
expect(input.type).toBe('input')
expect(button.type).toBe('button')
expect(button.props.children).toBe('Add Map Point')
expect(button.props.type).toBe('Submit')
})
it('should call onMapPointAdded if length of text is greater than 0',() => {
})
})
})
をクリックすると提出の戻り値はのテストユーティリティを使用すると、クリックをシミュレートすることができリアクト:onMapPointAddedときの競合がありますようにhttps://facebook.github.io/react/docs/test-utils.html – kinakuta
に見えます「ユーザーが入力を入力して「送信ボタン」をクリックしたときにイベントが1と呼ばれ、テストパート「テキストがゼロより大きい」という – sachgits