使用 Jest 对 React/Redux 组件进行单元测试
Unit testing using Jest for React/Redux Component
我正在使用 Jest 测试连接的组件。
这是组件的外观:
import React, {Component, PropTypes} from 'react';
import { connect } from 'react-redux';
class MyComponent extends Component {
constructor(){
super();
this.onButtonClick = this.onButtonClick.bind(this);
}
onButtonClick(id) {
dispatch(actions.onButtonClick(id));
}
render() {
return (
<div onClick={this.onButtonClick} />
)
}
}
function mapStateToProps(state) {
something: state.something
}
MyComponent.propTypes = {
dispatch: PropTypes.func.isRequired
}
export default connect(mapStateToProps)(MyComponent)
我不确定如何测试 'onButtonClick',因为它会发送一个动作。我如何期望使用 jest 使用正确的参数调用 dispatch。
除了默认导出之外,您还可以导出组件。所以将其更改为:
export class MyComponent extends Component
在您的测试中,您现在可以导入您的实际组件而不是连接的组件。由于您将 dispatch
作为组件的支柱,因此您可以在测试中为 dispatch
提供模拟函数或间谍(使用 jasmine 或 sinon 之类的东西),然后您可以测试它是否被调用使用正确的参数。
在这里查看更多关于 redux 测试的信息:
http://redux.js.org/docs/recipes/WritingTests.html
我正在使用 Jest 测试连接的组件。 这是组件的外观:
import React, {Component, PropTypes} from 'react';
import { connect } from 'react-redux';
class MyComponent extends Component {
constructor(){
super();
this.onButtonClick = this.onButtonClick.bind(this);
}
onButtonClick(id) {
dispatch(actions.onButtonClick(id));
}
render() {
return (
<div onClick={this.onButtonClick} />
)
}
}
function mapStateToProps(state) {
something: state.something
}
MyComponent.propTypes = {
dispatch: PropTypes.func.isRequired
}
export default connect(mapStateToProps)(MyComponent)
我不确定如何测试 'onButtonClick',因为它会发送一个动作。我如何期望使用 jest 使用正确的参数调用 dispatch。
除了默认导出之外,您还可以导出组件。所以将其更改为:
export class MyComponent extends Component
在您的测试中,您现在可以导入您的实际组件而不是连接的组件。由于您将 dispatch
作为组件的支柱,因此您可以在测试中为 dispatch
提供模拟函数或间谍(使用 jasmine 或 sinon 之类的东西),然后您可以测试它是否被调用使用正确的参数。
在这里查看更多关于 redux 测试的信息: http://redux.js.org/docs/recipes/WritingTests.html