Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs React/Jest如何在类组件之外测试函数_Reactjs_Jestjs - Fatal编程技术网

Reactjs React/Jest如何在类组件之外测试函数

Reactjs React/Jest如何在类组件之外测试函数,reactjs,jestjs,Reactjs,Jestjs,因此,在下面的示例中,我将validateResult设置为displayMessage。根据用户输入,它将返回一个值,这在类组件之外,我不知道如何使用jest测试类之外的函数 所以我试着用mount from enzyme来挂载组件,然后用instance来访问函数,但这给了我一个错误,说这不是一个函数,我不知道如何测试它 test.js const wrapper = mount ( <tempComponent />, ); const instance = wrapper

因此,在下面的示例中,我将
validateResult
设置为displayMessage。根据用户输入,它将返回一个值,这在类组件之外,我不知道如何使用jest测试类之外的函数

所以我试着用mount from enzyme来挂载组件,然后用instance来访问函数,但这给了我一个错误,说这不是一个函数,我不知道如何测试它

test.js

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

it('expect result to be good', () => {
  expect(instance.validateResult(true)).toBe("good");
});
const wrapper=mount(
,
);
const instance=wrapper.instance();
它('期望结果是好的',()=>{
expect(instance.validateResult(true)).toBe(“好”);
});
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>
    );
  }
}
const validateResult=(数据)=>{
如果(数据)
返回“好”;
其他的
返回“坏”;
};
类tempComponent扩展了组件{
建造师(道具){
超级(道具);
this.state={inputdata:''};
this.onSuccess=this.onSuccess.bind(this);
}
render(){
const{inputdata}=this.state;
const{onSubmit}=this.props;
const displayMessage=validateResult(inputdata);
返回(
onSubmit({inputdata},this.onSuccess)}>
this.setState({…this.state,inputdata:value})text={inputdata}/>
);
}
}

这里有点混乱。您正在寻找如何测试
validateResult
tempComponent
?有什么需要混淆的?我应该澄清哪一部分这是因为组件上没有定义
validateResult
!你不需要酶来测试正常的功能。简单地
导出const validateResult…
并在您的测试文件
中从'tempComponent'
导入{validateResult}如果这是一个已经在执行
导出默认连接(MapStateTops,mapDispatchToProps)的redux组件该怎么办?@kra3测试
validateResult
是我想要做的。