首页 文章

对于浅层渲染的反应组件,酶在prop上返回null

提问于
浏览
5

问题

我刚刚开始使用酶并进行反应测试 . 我试图让酶与karma和webpack一起处理一个微不足道的反应组件 . 我的问题是包装器上的 prop() 返回null,我不知道为什么 .

Greeter.js

import React from 'react';

/*
 * A trivial component we added while trying to get the react testing  working
 * */

export default class Greeter extends React.Component {
constructor(props) {
    super(props);
    this.state = { name: props.initialName };

    this.greeterText = this.greeterText.bind(this);
}

greeterText() {
    return (<p>Hello, {this.state.name}!</p>);
}

render() {
    return (<div className="greeter">
        {this.greeterText()}
    </div>);
  }
}

Greeter.defaultProps = { initialName: "World" };

Greeter.propTypes = {
  initialName: React.PropTypes.string
};

greeter.spec.js

import Greeter from '../../components/test/Greeter';
import React from 'react';
import { shallow } from 'enzyme';


describe("Simple testing with shallow rendering", () => {
  beforeEach(function() {
    let initialName = "joe";
    this.wrapper = shallow(<Greeter initialName={initialName} />);
  });

  it("renders default Greeter", function() {
    console.log(this.wrapper.find(".greeter").text());
    console.log(this.wrapper.debug());
    console.log(this.wrapper.state('name'));
    expect(this.wrapper.state('name')).to.equal("joe");
    expect(this.wrapper.prop('initialName')).to.equal("joe");
   });
 });

Result

使用浅渲染进行简单测试×渲染默认Greeter Chrome 50.0.2661(Windows 10 0.0.0)AssertionError:在Assertion.assertEqual上预期未定义为等于'joe >>(F:/ web / forms / node_modules / chai / chai . js:776:12)在Context的Assertion.ctx . (匿名函数)[等于](F:web / forms / node_modules / chai / chai.js:4192:25) . (F:web / forms / spec / components / greeter.spec.js:9:2932 < - webpack:///spec/components/greeter.spec.js:18:52)

Stack

  • 反应0.14.8

  • 业力

  • webpack

  • 酶2.2.0

1 回答

  • 1

    如果你想测试传入的道具那样使用 mount 就像这样:

    it('allows us to set props', () => {
        const wrapper = mount(<Foo bar="baz" />);
        expect(wrapper.props().bar).to.equal("baz");
        wrapper.setProps({ bar: "foo" });
        expect(wrapper.props().bar).to.equal("foo");
      });
    

相关问题