测试遍历反应组件的方法的最佳方法是啥

Posted

技术标签:

【中文标题】测试遍历反应组件的方法的最佳方法是啥【英文标题】:What is the best way to test methods that traverse the react components测试遍历反应组件的方法的最佳方法是什么 【发布时间】:2015-12-31 03:25:05 【问题描述】:

我尝试测试小型反应组件。以下组件是一个选项卡系统,当单击选项卡时,更改被单击选项卡的类名。它正在工作,但我想测试它们,但我不知道测试遍历许多组件的方法的步骤是什么。我把代码放在上面了。

TabSystem:有一个改变当前Tab状态的方法,这个方法是作为渲染每个标签的标签组件中的prop。

React.createClass(
  ....
  handleClick (currentTab) 
    this.setState( currentTab )
  ,

  render () 
    return (
      <div>
        <Tabs tabs = tabs2 currentTab = this.state.currentTab onClick = this.handleClick/>
      </div>
    )
  
);

Tabs: 接收到onClick prop 的父方法,这个方法作为prop 到tab 组件中,我的目标是只在tab 的名称中添加onClick 方法。

React.createClass(
  ...
  renderTabs () 
    return this.props.tabs.map((tab, index) => 
      var classname = index === this.props.currentTab ? 'active' : null;
      var clickHandler = this.props.onClick.bind(null, index);
      return (
        <Tab key=tab.name onClick=clickHandler index=index className=classname name=tab.name/>
      )
    )
  ,
  render () 
    return (
      <div>
        this.renderTabs()
      </div>
    )
  
);

Tab:再次接收到 onClick 属性的父方法。

React.createClass(
  render () 
    return (
      <span className=this.props.className onClick=this.props.onClick>
        this.props.name
      </span>
    )
  
);

测试此方法的最佳方法是什么?我是否需要在所有组件中都使用行之有效的方法?

【问题讨论】:

【参考方案1】:

我编写了一个测试库,抽象了 React 的测试工具。 https://github.com/Legitcode/tests 你可以这样做:

Test(<TestComponent />)
.find('button')
.simulate(method: 'click', element: 'button')
.element(button => 
  expect(button.props.className).to.be.equal('blah');
)

您明白了,希望对您有所帮助。

【讨论】:

以上是关于测试遍历反应组件的方法的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章

在 Classic Asp VBScript 中遍历数组的最佳方法是啥?

在 Rust 中耗尽 mspc 通道的最佳方法是啥?

使输入上的 disabled 属性与 Meteor 助手反应的最佳方法是啥?

将两个列表组合成地图(Java)的最佳方法是啥?

遍历 Perl 数组的最佳方法

将单色图像转换为二进制字符串的最佳方法是啥?