Problem
I am just starting out with an enzyme and testing the reaction. I am trying to get the enzyme to work with karma and webpack on a trivial component of the reaction. My problem is that prop() on the wrapper returns null, and I'm not sure why.
Greeter.js
import React from 'react'; 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
Simple test with fine visualization × displays Greeter Chrome 50.0.2661 (Windows 10 0.0.0) by default AssertionError: expected undefined to be 'joe' in Assertion.assertEqual → (F: /web/forms/node_modules/chai/chai.js: 776: 12) at Assertion.ctx. (anonymous function) [as equal] (F: web / forms / node_modules / chai / chai.js: 4192: 25) in the Context. (F: web / forms / spec / components / greeter.spec.js: 9: 2932 <- webpack: ///spec/components/greeter.spec.js: 18: 52)
Stack
- respond 0.14.8
- karma
- Webpack
- enzyme 2.2.0
source share