Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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
Javascript 酶测试中的ref输入值应为空字符串,但返回未定义的值_Javascript_Reactjs_Typescript_Jestjs_Enzyme - Fatal编程技术网

Javascript 酶测试中的ref输入值应为空字符串,但返回未定义的值

Javascript 酶测试中的ref输入值应为空字符串,但返回未定义的值,javascript,reactjs,typescript,jestjs,enzyme,Javascript,Reactjs,Typescript,Jestjs,Enzyme,编辑这是一个代码沙盒: 不幸的是,我无法让酶配置在沙箱中工作,但这个问题的基本代码都在那里,单击按钮将打印输入框的typeof值 我正在尝试编写一个测试,测试单击按钮后,输入元素的值应该如何变化 下面是单击按钮组件时调用的函数,stopTimer,它调用useReducerdispatch(),以更新useReducer的状态store,下面是按钮的外观 const stopTimer = (): void => { dispatch({ payload: sta

编辑这是一个代码沙盒:

不幸的是,我无法让酶配置在沙箱中工作,但这个问题的基本代码都在那里,单击按钮将打印输入框的
typeof


我正在尝试编写一个测试,测试单击
按钮后,
输入
元素的值应该如何变化

下面是单击按钮组件时调用的函数,
stopTimer
,它调用useReducer
dispatch()
,以更新useReducer的状态
store
,下面是按钮的外观

  const stopTimer = (): void => {
    dispatch({
      payload: state.totalSeconds,
      type: 'stop',
    });

...

   <Button handleClick={ stopTimer } />
为了用酶测试这一点,我装载父组件
,并给输入一个初始值
'hello'
。然后,我调用按钮的
handleClick
属性,该属性应调用useReducer的
dispatch
函数,更新
存储
,然后触发
useffect
,该属性应将输入值设置为空字符串

我希望输入的值在此之后是一个空字符串,但它最终是
未定义的

我还使用Ezyme的
debug()
尝试验证DOM在不同时间的外观。当我没有调用按钮的
handleClick
,或者如果我没有调用
wrapper.update()
,输入的值是
'hello'
,正如预期的那样,但是
debug()
显示调用
update()
后输入没有

it('单击停止按钮时应包含空字符串',()=>{
const wrapper=mount();
wrapper.find('input').props().value='hello';
act(()=>wrapper.find(Button.props().handleClick());
wrapper.update();
log(wrapper.find('input').debug());
expect(wrapper.find('input').props().value).toBe(“”);
});

在编写测试之前,您是否在浏览器中验证此功能是否按预期工作?是的,它在浏览器中按预期工作。在
useffect
中,在我将输入值设置为空字符串之后,我立即使用log
console.log(typeof ref?.current?.value)
,它记录
字符串
。看看我能不能把它做成一个代码沙盒。。
  const [store, dispatch] = useReducer(reducer, dashboardStore);

...

  useEffect((): void => {
    ref.current!.value = '';
  }, [store]);

...

  <input ref={ref} type='text'></input>