【发布时间】:2016-05-12 21:13:58
【问题描述】:
反应组件:
import React, { Component, PropTypes } from 'react';
export default class Simple extends Component {
render() {
return <div className="Simple">
Result: {this.props.value * 4}
</div>
}
}
Simple.propTypes = {
value: PropTypes.number,
};
测试:
describe('<Simple />', _ => {
it('should display', done => {
const wrapper = shallow(<Simple />);
expect(wrapper.find('div.Simple')).to.have.length(1);
done();
});
it('should quadruple a value passed into it', done => {
const wrapper = shallow(<Simple value={3} />);
expect(wrapper.contains(<div className="Simple">Result: 12</div>)).to.equal(true);
done();
})
});
第一个测试通过,第二个(四倍一个值)失败。我无法弄清楚我在这里做错了什么。
编辑:
如果我修改组件只返回这个:
return <div className="Simple">
Result:
</div>
测试如下:
expect(wrapper.contains(
<div className="Simple">
Result:
</div>
)).to.equal(true);
然后它通过了。所以当我引入计算道具时,测试失败了。我不太清楚为什么。
【问题讨论】:
-
你需要在第二个结尾加分号吗?
-
不,这绝对不是问题。
-
我们可以看到
ReactDOM.render(<HelloMessage value=22 />, mountNode);我对节点有点陌生所以我正在寻找这里定义的执行工作流::facebook.github.io/react -
我保证这也不是问题。我可以在页面上看到组件渲染。无论如何显示代码也无济于事.. 它不是标准的 React。
-
我想知道是否需要使用
render而不是shallow?然后expect(wrapper.text()).to.equal('Result: 12')