React/Jest How to test function outside of the class component

Viewed 2647

So in the example below i have validateResult which is set to the displayMessage. Depending on the user input it'd return a value, this is outside of the class component and i dont know how to test a function outside of the class with jest.

So i tried using mount from enzyme to mount the component then with instance to access the function but this gave me an error saying that this is not a function and im not sure how to test this.

test.js

const wrapper = mount (
  <tempComponent />,
);
const instance = wrapper.instance();

it('expect result to be good', () => {
  expect(instance.validateResult(true)).toBe("good");
});

tempComponent.js

const validateResult = (data) => {
  if(data)
    return "good";
  else
    return "bad";
};


class tempComponent extends Component {

  constructor(props) {
    super(props);
    this.state = { inputdata: '' };
    this.onSuccess = this.onSuccess.bind(this);
  }

  render() {
    const { inputdata } = this.state;
    const { onSubmit } = this.props;
    const displayMessage = validateResult(inputdata);

    return (
          <div id="submit-form" className="row justify-content-center">
            <div className="col-md-4">
              <FormContainer onSubmit={() => onSubmit({ inputdata }, this.onSuccess)} >
                <Input type="text" label="" onTextChange={(value) => this.setState({ ...this.state, inputdata: value })} text={inputdata} />
                <SubmitButton value={'Submit'} disabled={displayMessage}/>
              </FormContainer>
            </div>
          </div>
    );
  }
}
0 Answers
Related